save the loop data in a if else statement

조회 수: 17 (최근 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 CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by