필터 지우기
필터 지우기

How to pass control from one loop to the other loop

조회 수: 3 (최근 30일)
Sai
Sai 2015년 10월 14일
편집: Stephen23 2015년 10월 16일
My aim is to alter a data sample in such a way that the sign of values in between 0.01 to next 0.01 are altered.
Like for example; if given sample is
{0.3,0.21,0.9,0.3,0.01,0.3,0.4,0.32,0.01,0.9,0.97}
My code has to give the output as
{0.3,0.21,0.9,0.3,0.01,-0.3,-0.4,-0.32,0.01,0.9,0.97}
So, I'm trying to write a nested loop to read the sample and alter the sign in between 0.01 to next 0.01
for n=1:100000
if u(n)=0.01
for m=n+1:10000
if u(m)=0.01
% switch to the original 'n' loop
end
u(m)=-1*u(m);
end
end
end
But, I'm unable to switch to the original loop. Anyone suggest, how can I switch between them ?

채택된 답변

Thorsten
Thorsten 2015년 10월 14일
편집: Thorsten 2015년 10월 14일
invert = 1;
for i = 1:numel(u)
if u(i) == 0.01
invert = -invert;
elseif invert<0
u(i) = -u(i);
end
end
  댓글 수: 1
Sai
Sai 2015년 10월 15일
Thanks for your answer, very simple and elegant :)

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Eng. Fredius Magige
Eng. Fredius Magige 2015년 10월 14일
try this
for n=1:100000 if(find(sample(:)==0.01,1)=<find(sample(:)==0.01,2)) % sample is your data num=-1*sample(:,n) else num=sample(:,n) end

Stephen23
Stephen23 2015년 10월 14일
편집: Stephen23 2015년 10월 14일
There is no need for slow and inefficient loops when code vectorization is faster and neater:
>> tol = 0.0005;
>> val = 0.01;
>> V = [0.3,0.21,0.9,0.3,0.01,0.3,0.4,0.32,0.01,0.9,0.97];
>> idx = abs(V-val)<tol;
>> idy = mod(cumsum(idx),2);
>> idz = (-1).^(idy&[false,idy(1:end-1)]);
>> V.*idz
ans =
0.3 0.21 0.9 0.3 0.01 -0.3 -0.4 -0.32 0.01 0.9 0.97
  댓글 수: 2
Sai
Sai 2015년 10월 15일
Thanks for your answer, You've introduced me to new concept. :)
Stephen23
Stephen23 2015년 10월 16일
편집: Stephen23 2015년 10월 16일
My pleasure. You can also vote for answers that introduce you to new concepts!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by