Why looping just save the last value, not every loop ?
1 回表示 (過去 30 日間)
古いコメントを表示
Dear all, I have .TXT data with name ZA000060.TXT, ZA000120.TXT, ZA000180.TXT, ZA000240.TXT, ZA000300.TXT. I load those data with these syntax
for k=60:60:300
aa = sprintf('%03d',k);
filename = sprintf('ZA000%03d.TXT', k);
ZA{k}=load(filename);
end
for k = 1:length(ZA)
x(:) = ZA{k};
% do stuff with x
end
but why the result just store the last data on ZA{k} ? not every data store after looping. how to fix this ?? any help would be great. Best regard,
採用された回答
Stephen23
2016 年 4 月 14 日
編集済み: Stephen23
2016 年 4 月 15 日
Try using a separate vector to store the values:
V = 60:60:300;
C = cell(size(V));
for k = 1:numel(V)
filename = sprintf('ZA000%03d.TXT', V(k));
C{k} = load(filename);
end
The original answer used the values of V directly as indices into the cell array, which produced lots of empty cells because only every sixtieth cell had something in it. This is not a good way to code, and it is not a very robust solution to use data values as indices.
5 件のコメント
Stephen23
2016 年 4 月 15 日
編集済み: Stephen23
2016 年 4 月 15 日
That was my mistake: I did not notice that you are trying to load text file, not a mat file. You should load the data into a cell array, exactly like the original answer:
C = cell(size(V));
for k = 1:numel(V)
filename = sprintf('ZA000%03d.TXT', V(k));
C{k} = load(filename);
end
For ascii data load does not return a structure, just a numeric matrix. This can be stored in the cell array.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!