Need Help Urgent!!!!!!!!!!!!
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
i have this data in matrix X=[22,33,11,33,33,33,22]
i want to change the data with this form of matrix X=[22,33,22,33,33,33,44]
i have to follow this rules: 1)when find(X==33) next data must change into 22 2)when there have data "33" three times in row,the next data must change to 44
this is my example code for the looping: [a b]=find(X==33)
if X(a,b+1)-X(a,b)==1 if X(a,b+2)-X(a,b+1)==1 X(a,b+3)=44 end end
if X(a,b+1)-X(a,b)==2 X(a,b+2)=22 end
i know im doing this all wrong,can someone give a correct algorithm to get the answer that satisfied the rules.
Amir my email: noksworld@yahoo.com
4 Kommentare
Akzeptierte Antwort
Matt Fig
am 28 Mär. 2011
You did not completely clarify, but here is a non-vectorized code that will do part of the job. Note that for this problem, it might be quicker to use a loop anyway.
cnt = 1;
Y = X==33;
while cnt <= length(X)-2
if Y(cnt)
if Y(cnt+1:cnt+2) % Three in a row.
X(cnt+3) = 44;
cnt = cnt + 4;
elseif Y(cnt+1) % Two in a row.
X(cnt+2) = 11;
cnt = cnt + 3;
else % Just one 33.
X(cnt+1) = 22;
cnt = cnt + 2;
end
else
cnt = cnt + 1;
end
end
5 Kommentare
Matt Fig
am 28 Mär. 2011
I said, "Put everything in a FOR loop over the rows of X." It looks like you just put one clause of the IF statement in a FOR loop. Everything means EVERYTHING (except or course your X variable creation.)
for ii = 1:size(X,1)
cnt = 1;
Y = X(ii,:)==33;
.....
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!