Add an element to a 3D array
92 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I want to add to a 3D array using a for loop without changing the previous values. I created an empty 3D array by writing:
Array= zeros(0,0,100);
Then i wrote a for loop to append to that array the index number of when the if statement is satisfied, in the correct 3rd dimension
for 3Dimages=1:100
for i=1:512*inputofuser
if Original3Dimage(i,:,3Dimages)==0
Array=[Array(:,:,3Dimages),i];
else
break
end
end
end
I know if this was 2D, it could be done by saying Array=[Array,i] but i want this to be done in 3D such that depending on which of the 1:100 3Dimages the for loop is in, it creates a row of i values in the same 1:100 3Dimages page of the Array.
Example:
when 3Dimages=1
lets say the true statement occurs at an i value of 1,2,3,4,5
then when 3Dimages=2, the true statement occurs at an i value of 6,7
then when 3Dimages=3, the true statement occurs at an i value of 10,11,12
therfore Array in this 3Dimages=1:3 smaller example would have a size of 1 5 3 where:
(:,:,1)= [1 2 3 4 5]
(:,:,2)= [6 7 blank blank blank]
(:,:,3)= [10 11 12 blank blank]
0 commentaires
Réponses (1)
Jos (10584)
le 25 Sep 2019
To concatenate two arrays A and B in the third dimension, use cat
cat(3, A, B)
Note that all the other dimensions of A and B should match (which does not seem to be the case in your example, at first sight). And, by the way:
% [A ; B] <-> cat(1, A, B)
% [A B] <-> cat (2, A, B)
0 commentaires
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!