3D Array Rastering

3 vues (au cours des 30 derniers jours)
Dillon Kopecky
Dillon Kopecky le 28 Mai 2020
I am attempting to raster scan DMD mirrors by inputing a 3D array. I would like the array (for the number of mirrors along one side, n = 2) to look like: [[1,0;0,0],[0,1;0,0],[0,0;1,0],[0,0;0,1]] (i.e. a row major order scan of the mirrors). I intend to scale this array and my initial attempt hasn't been succesful. How do I create this array?
N = 4;
Array3D = zeros(2,2,N);
for row=1:2
for col=1:2
for k=1:N
Array3D(row,col,k) = 1;
end
end
end
  1 commentaire
darova
darova le 29 Mai 2020
What about eye?

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 29 Mai 2020
Modifié(e) : Matt J le 29 Mai 2020
I'm not sure from your description how this should generalize for different N, but perhaps this is what you want:
>> N=2; Array3D=reshape(eye(N^2),N,N,[])
Array3D(:,:,1) =
1 0
0 0
Array3D(:,:,2) =
0 0
1 0
Array3D(:,:,3) =
0 1
0 0
Array3D(:,:,4) =
0 0
0 1
  2 commentaires
Matt J
Matt J le 29 Mai 2020
Modifié(e) : Matt J le 29 Mai 2020
Incidentally, for large N, the array you are trying to building (assuming I've understand the goal correctly) will be highly RAM-consuming. You can reduce memory consumption by using my ndSparse class (Download). E.g.,
>> N=30; Array3D=reshape(eye(N^2),[N,N,N^2]); SparseArray3D=ndSparse(speye(N^2),[N,N,N^2]);
>> whos *Array3D
Name Size Kilobytes Class Attributes
Array3D 30x30x900 6329 double
SparseArray3D 30x30x900 22 ndSparse
>> isequal(Array3D,SparseArray3D)
ans =
logical
1
Dillon Kopecky
Dillon Kopecky le 29 Mai 2020
Modifié(e) : Dillon Kopecky le 29 Mai 2020
Excellent! Thank you! I knew I must have been overcomplicating the solution. Thanks for the heads up regarding optimization and providing your code.
I needed row major operation which may not have initially been clear. The following code yields the correct ordering in case someone is interested.
N=3;
A = eye(N^2);
Array3D=reshape(A',N,N,[]);
B = permute(Array3D,[2 1 3]);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Type Conversion 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!

Translated by