save the loop data in a if else statement

1 回表示 (過去 30 日間)
SUSHMA MB
SUSHMA MB 2018 年 4 月 3 日
コメント済み: SUSHMA MB 2018 年 4 月 4 日
I have an if statement
for ind = 1:MAX_ITER
if(mod(ind, 1500) == 0)
h = findobj(gca,'Type','line');
x=get(h,'Xdata');
y=get(h,'Ydata');
z=[x,y];
H_XX = z{2,1};
H_YY = z{2,2};
filename=['test',num2str(ind),'.mat'];
save(filename)
end
end
How can i save the 'H_XX' and 'H_YY' of the entire loop in a single file ?

採用された回答

KSSV
KSSV 2018 年 4 月 3 日
count = 0 ;
iwant = cell([],1) ;
for ind = 1:MAX_ITER
if(mod(ind, 1500) == 0)
h = findobj(gca,'Type','line');
x=get(h,'Xdata');
y=get(h,'Ydata');
z=[x,y];
H_XX = z{2,1};
H_YY = z{2,2};
count = count+1 ;
iwant{count,1} = [H_XX H_YY] ;
end
end
iwant = cell2mat(iwant) ;
iwant gives you data when the loop goes inside if. You can save it into a file you want.
  3 件のコメント
KSSV
KSSV 2018 年 4 月 4 日
iwant is a variable...not a file. YOu can save it using save.
SUSHMA MB
SUSHMA MB 2018 年 4 月 4 日
Thank you for the answer....

サインインしてコメントする。

その他の回答 (1 件)

Stephen23
Stephen23 2018 年 4 月 3 日
編集済み: Stephen23 2018 年 4 月 3 日
It is simpler to avoid generating too many values (and then using mod to select which values you want to use) because then you can trivially preallocate an output array of the correct size:
vec = 1500:1500:MAX_ITER;
out = cell(numel(vec),2);
for k = 1:numel(vec)
...
out(k,:) = [x,y];
end
save('test.mat','out')
This trivially avoids expanding the output array on each iteration:
  3 件のコメント
Stephen23
Stephen23 2018 年 4 月 4 日
@SUSHMA MB: sure, that is what my code shows you.
SUSHMA MB
SUSHMA MB 2018 年 4 月 4 日
Thank you for the answer....

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeFile Operations についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by