Effacer les filtres
Effacer les filtres

How to write matrix elements with its position?

8 vues (au cours des 30 derniers jours)
Ammy
Ammy le 25 Jan 2018
Commenté : Ammy le 25 Jan 2018
I have a matrix A=[1 2 3; 4 5 6; 7 8 9] I want to write each entry with its row and column position e.g 111 indicates the element 1 at position first row First column , also 328 element 8 at position 3rd row and second column. so with the help of above matrix
A I want the following
111
122
133
214
225
236
317
328
339
Thanking for the anticipation.
  1 commentaire
Guillaume
Guillaume le 25 Jan 2018
While it's very easy to do what you want, what is its purpose? Bearing in mind that if you don't limit A to integers [0-9] and its size to a max of 9 rows and 9 columns, then the operation is irreversible.
What would the value 1234 mean?
  • 1st row, 2nd column, value 34?
  • 12th row, 3rd column, value 4?
  • 1st row, 23rd column, value 4?

Connectez-vous pour commenter.

Réponse acceptée

Birdman
Birdman le 25 Jan 2018
Modifié(e) : Birdman le 25 Jan 2018
[r,c]=find(A);
val=sortrows([r c A(:)],1)
  2 commentaires
Guillaume
Guillaume le 25 Jan 2018
That will fail if any value in A is 0.
[r, c] = find(true(size(A));
val = sortrows([r c A(:)],1)
would be safer.
Or:
[c, r] = ndgrid(1:size(A, 2), 1:size(A, 1));
val = [r(:), c(:), a(:)];
Birdman
Birdman le 25 Jan 2018
Thanks.

Connectez-vous pour commenter.

Plus de réponses (2)

Domanic
Domanic le 25 Jan 2018
Or ind2sub:
A = [1 2 3; 4 5 6; 7 8 9].';
[a,b] = ind2sub(size(A),1:numel(A));
fprintf('%d%d%d\n',[b.' a.' A(:)].')

Jan
Jan le 25 Jan 2018
What about loops?
A = [1 2 3; 4 5 6; 7 8 9];
[s1, s2] = size(A);
for i1 = 1:s1
for i2 = 1:s2
fprintf('%d%d%g\n', i1, i2, A(i1, i2));
end
end
  1 commentaire
Ammy
Ammy le 25 Jan 2018
Thank you very much, this code really work

Connectez-vous pour commenter.

Catégories

En savoir plus sur Resizing and Reshaping 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