Need Help Urgent!!!!!!!!!!!!
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Matt Fig
el 28 de Mzo. de 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 comentarios
Matt Fig
el 28 de Mzo. de 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
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!