平行工具箱+净。提供:净。cdf实验组的函数使用,但不与parfor ?

3视图(30天)
你好了。我有一个问题关于如何使用平行阅读网络工具箱。提供文件使用 netcdf 功能。Structure-wise,这里是代码。
%假设file_ID和loc_str已经存在。
% netcdf.open file_ID =输出
% loc_str = char excel文件
vars_taken = 47;%,所以有47个变量的数据。尺寸不计数。
parforvar_count = 3: vars_taken + 2%变量中列出3日第49位。
%确定变量是什么?
[varname, ~, ~, ~] = netcdf.inqVar (file_id var_count);
%得到变量ID
vars_id = netcdf.inqVarID (file_id varname);
% %属性名称和值的变量
vars_attname = netcdf.inqAttName (file_id vars_id 1);%变量名
vars_attval = netcdf.getAtt (file_id vars_id vars_attname);
unit_attname = netcdf.inqAttName (file_id vars_id 2);%的单位
unit_attval = netcdf.getAtt (file_id vars_id unit_attname);
%写在excel。这对我之前的问题已经解决了
sheet_name =“值”;
writematrix (time_data [loc_str varname“.xlsx”),“表”sheet_name,“范围”,“B1:日元”);
writematrix (vars_attval [loc_str varname“.xlsx”),“表”sheet_name,“范围”,“AA2”);
writematrix (unit_attval [loc_str varname“.xlsx”),“表”sheet_name,“范围”,“AA3”);
disp ([varname“完成”]);%显示如果它完成
结束
netcdf.close (file_id);
这个生成以下错误
推荐- - - - - -
使用netcdf错误。inqVar(26)行
NetCDF图书馆遇到一个错误在执行期间的“inqVar”功能——“不是一个有效的ID (NC_EBADID)”。
错误Untitled_parfor(第95行)
parfor var_count = 3: vars_taken + 2
推荐- - - - - -
但是如果我代替 parfor 没有错误, disp 显示正确,得到Excel文件。
我需要这个 parfor 所以当我读到的实际数据(约能完成得更快。6小时一个月数据没有平行)。我能怎么做?谢谢你!

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2022年4月7日
matlab.internal.imagesci.netcdflib()创建内部资源,不会自动复制到工人。
看到 //www.tatmou.com/help/parallel-computing/parallel.pool.constant.html buzshy6-1 例如创建一个parpool常数通过执行一个函数在每个工人——在这种情况下你会做netcdf。打开每个工人。
7评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年11月8日
parfor语句中,10是工人的最大数量的语句将被派往。
文档做 表明,它控制的池的大小。如果已经存在一个游泳池和12个工人就将发送到10的12工人,让其他两个工人现有但闲置。

登录置评。

更多的答案(0)

下载188bet金宝搏


释放

R2021b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!