If statement / conditional operations
3 Ansichten (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
Kategorien
Mehr zu Multidimensional Arrays 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!