About the usage of for, while and return
1 次查看(过去 30 天)
显示 更早的评论
I need to perform while loop many times as follows;
data=xlsread('data.xlsx','B1:B86640');
% first part
i_1=1;
while (abs(data(1)) > 0.10 || abs(data(2)) > 0.10 || abs(data(3)) > 0.10)
i_1=i_1+1;
if i_1==361;
errordlg('iteration cannot be converged', 'Error!', 'modal')
return
end
end
% second part
i_2=1;
while (abs(data(362)) > 0.10 || abs(data(363)) > 0.10 || abs(data(364)) > 0.10)
i_2=i_2+1;
if i_2==361;
errordlg('iteration cannot be converged', 'Error!', 'modal')
return
end
end
%third part
i_3=1;
while (abs(data(723)) > 0.10 || abs(data(724)) > 0.10 || abs(data(725)) > 0.10)
i_3=i_3+1;
if i_3==361;
errordlg('iteration cannot be converged', 'Error!', 'modal')
return
end
end
After these excecutions, I need to store i_1, i_2 and i_3 arrays.
% for all abs(data(xx)) parts, xx equals to array of 1:361:86280;
How can I execute the above steps avoiding the repeated parts using a single part of different codes?
5 个评论
采纳的回答
dpb
2020-5-19
编辑:dpb
2020-5-19
With the clarification that operations are the same, then
data=xlsread('data.xlsx','B1:B86640');
% preliminaries -- define stopping criteria data points
N=2; % number consecutive points from
IDX=[1:361:723]; % starting points
TOL=0.10; % tolerance
idxvec=cell2mat(arrayfun(@(ix) colon(ix,ix+N),IDX,'UniformOutput',false)); % expand indices to vector
MAXITER = 361;
iter=0;
while any(abs(data(idxvec)>TOL)
iter=iter+1;
if iter>=MAXITER
errordlg('iteration cannot be converged', 'Error!', 'modal')
return
end
data=yourfunctionthatchangesdatagoeshere(iter,data); % do whatever it is need to do...
end
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!