Invalid file identifier in Parfor loop
古いコメントを表示
How to correct this error when using the parfor loop? Any suggestion to solve this issue? Thanks.
Invalid file identifier. Use fopen to generate a valid file identifier.
filename01 = "D:\...\testParfor"; % filename01 file parth
parfor j = 1:nk2_node
% File path
filename_HD = sprintf('%s%s%d',filename01,"\zone_case0\profile_",j);
Cal_cont = HD_Nod_Inf(filename_HD);
...
end
9 件のコメント
xiaohuo
2022 年 3 月 10 日
Walter Roberson
2022 年 3 月 10 日
We recommend that you use fullfile() rather than string concatenation to build file names.
filename_Nod_sub = fullfile(filename_HD, "Nod.out");
and
filename_HD = fullfile(filename01, "zone_case0", "profile_"+j);
xiaohuo
2022 年 3 月 10 日
Walter Roberson
2022 年 3 月 10 日
Change
fidin_Nod_sub=fopen(filename_Nod_sub,'r+');
to
[fidin_Nod_sub, msg] = fopen(filename_Nod_sub,'r+');
if fidin_Nod_sub < 0
error('Could not open file "%s" because "%s"', filename_Nod_sub, msg);
end
xiaohuo
2022 年 3 月 10 日
Walter Roberson
2022 年 3 月 10 日
That code assumes that you were able to read at least 399 lines from the file, and that you want to skip the first 200 lines.
If that is what you are trying to do, then I would suggest you replace your current function, to become:
fopen() like before
fmt = repmat('%f', 1, 22);
Cal_cont = cell2mat(textscan(fidin_Nod_sub, fmt, 'HeaderLines', 200));
fclose(fidin_Nod_sub)
xiaohuo
2022 年 3 月 11 日
Walter Roberson
2022 年 3 月 11 日
for i=1:199
k = i + Line_nod_sub-1-199;
Cal_cont(i,1:22) = str2num(newtline_Nod_sub{k}); % error
end
Suppose that 50 lines were read, so Line_nod_sub = 50. First iteration of the loop, i is 1, and k = 1 + 50 - 1 - 199 which is 51-200 which is -149 . Out of range.
Suppose that 205 lines were read, so Line_nod_sub = 205. First iteration of the loop, i is 1, and k = 1 + 205-1-199 = 6, which is okay. Last iteration of the loop, i is 199, and k = 199 + 205 - 1 - 199 = 204, which looks okay.
So I guess your loop might be okay -- but not until after you enforce that Line_nod_sub is at least 200.
xiaohuo
2022 年 3 月 11 日
回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!