Effacer les filtres
Effacer les filtres

Generating A(i,j) = [i; j]

16 vues (au cours des 30 derniers jours)
Jeong Ho
Jeong Ho le 4 Déc 2012
Hi, is there a clean way to generate a matrix A(i,j) = [i; j], especially without resorting to loops? Thank you so much!
  1 commentaire
Jonathan Epperl
Jonathan Epperl le 4 Déc 2012
No, that would not be a matrix, since you're assigning a vector to the element at (i,j). Do you want to create a 3-dim array, or a cell array, or a blockmatrix? Please modify your question accordingly.

Connectez-vous pour commenter.

Réponse acceptée

Matt Fig
Matt Fig le 4 Déc 2012
Modifié(e) : Matt Fig le 4 Déc 2012
You want each element of your matrix to be a two element vector?
That is not a matrix, but it does sound like a cell array.
C = num2cell(cumsum(ones(5),2));
C = cellfun(@(x,y) [x;y],C,C.','Un',0)

Plus de réponses (1)

Walter Roberson
Walter Roberson le 4 Déc 2012
Modifié(e) : Walter Roberson le 4 Déc 2012
No. Numeric matrices cannot store multiple items per location.
Cell arrays can store vectors in each location, but then A(i,j) would not be the vector [i;j] and would instead be the 1 x 1 cell array that contained within it the vector [i;j]
Perhaps you would like a 3D array instead.
[P, Q] = ndgrid(1:5, 1:7); %sample bounds
A = cat(3, P, Q);
You could convert to a cell array:
mat2cell(A, ones(1,size(A,1)), ones(1,size(A,2)), 2)

Catégories

En savoir plus sur Shifting and Sorting Matrices 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