Je voudrais générer une matrice N-by-N-by-3 A
tel que A(:,:,i) = eye(n)*i
. Comment puis-je faire cela sans utiliser de boucles (c'est-à-dire de manière vectorisée)?Comment puis-je générer cette matrice 3D sans boucles pour MATLAB?
3
A
Répondre
0
Si vous avez une ancienne version de Matlab avant BSXFUN a été introduit, envisager cette option (la même réponse que celle par @Jonas):
N = 4; M = 3;
A = repmat(eye(N),[1 1 M]) .* repmat(permute(1:M,[3 1 2]),[N N 1])
A(:,:,1) =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
A(:,:,2) =
2 0 0 0
0 2 0 0
0 0 2 0
0 0 0 2
A(:,:,3) =
3 0 0 0
0 3 0 0
0 0 3 0
0 0 0 3
1
1
Une autre option consiste à utiliser BSXFUN, la multiplication de la matrice d'identité avec un 1-en-1-en-3 matrice de 1,2,3
>> bsxfun(@times,eye(4),permute(1:3,[3,1,2]))
ans(:,:,1) =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
ans(:,:,2) =
2 0 0 0
0 2 0 0
0 0 2 0
0 0 0 2
ans(:,:,3) =
3 0 0 0
0 3 0 0
0 0 3 0
0 0 0 3
Questions connexes
- 1. MATLAB: Extraire plusieurs parties d'une matrice sans utiliser de boucles
- 2. Pour les boucles dans Matlab
- 3. Comment optimiser les boucles MATLAB?
- 4. Tracé 3D dans Matlab
- 5. Conversion d'une matrice en MATLAB
- 6. Comment programmer pour générer des modèles 3D?
- 7. vectorisation boucles dans Matlab - Problèmes de performances
- 8. MATLAB formatage d'une matrice
- 9. Matrice de Python Matlab
- 10. Comment générer une matrice circulaire?
- 11. Matlab comment dessiner diagramme de dispersion pour matrice
- 12. Initialiser matrice basée sur MATLAB® indices
- 13. Comment facilement faire croiser le produit d'une matrice 3x3 avec un vecteur 3d dans matlab?
- 14. cellule à matrice correspondant/map/cellOperations (MATLAB)
- 15. Comment créer cette matrice? (PHP)
- 16. Correspondances 3D à partir de la matrice fondamentale
- 17. Comment construire cette matrice php?
- 18. Comment faire fonctionner XOR pour une matrice logique dans MATLAB?
- 19. Comment générer la matrice et le vecteur suivants à partir des données d'entrée données dans MATLAB?
- 20. Matlab visualisation de volume 3D et superposition 3D
- 21. Vector à la matrice syntaxe dans Matlab
- 22. Comment puis-je former facilement une matrice Levi-Civita 3x3x3 dans MATLAB?
- 23. Matlab: Affectation vectorisé de matrice double à matrice de cellules
- 24. Parcelles de dispersion 3D dans Matlab
- 25. décomposition Eigen d'une matrice de forme W * diag (S) * W » pour la matrice exponentielle MATLAB
- 26. erreur d'indexation de la matrice dans Matlab
- 27. Insertion de lignes dans la matrice MATLAB
- 28. Générer des vecteurs dans MATLAB
- 29. tracer un graphique 3D dans matlab?
- 30. Empilement de plusieurs images 2D en 3D dans Matlab
bsxfun n'est pas dans matlab7.3.0 (r2006b), correct? –
@Quiang Li: On dirait qu'il est apparu en premier dans r2007a. – Jonas