If statement / conditional operations
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Chris Brown
am 3 Feb. 2017
Kommentiert: Chris Brown
am 3 Feb. 2017
Hi all,
I'm trying to write a code that does something based on the adjacent cells. I'm not sure the best way to do this, but have started using the 'if' statement.
arb is a 3D array, whilst arbgrad is the 1st derivative / gradient of arb.
if ((arb(j,i-1,k)+arb(j,i+1,k)+(arb(j+1,i,k))+arb(j-1,i,k))./4)>(arb(j,i,k));
if arbgrad(j,i,k)<0;
BB1(arbgrad<0)=(arbgrad<0).*1;
else
BB2(arbgrad>0)=(arbgrad>0).*-1;
end
else
if arbgrad(j,i,k)<0
BB3(arbgrad<0)=(arbgrad<0).*1;
else
BB4(arbgrad>0)=(arbgrad>0).*-1;
end
end
arbgrad(j,i,k)=BB1(j,i,k)+BB2(j,i,k)+BB3(j,i,k)+BB4(j,i,k);
The error message keeps coming up:
In an assignment A(:) = B, the number of elements in A and B must be the same.
I'm not sure why because arbgrad, arb and BB1-4 all have the same amount of elements.... Any help would be greatly appreciated.
Thanks!
0 Kommentare
Akzeptierte Antwort
Adam
am 3 Feb. 2017
Bearbeitet: Adam
am 3 Feb. 2017
(arbgrad<0)
is a logical vector of the same length as arbgrad.
BB3(arbgrad<0)
which you try to assign it to is a vector of length equal to the number of true (1) values in the above vector.
Do you maybe mean to assign:
BB3(arbgrad<0) = arbgrad(arbgrad<0)
?
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!