is it possible to get index of reshaped matrix
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Elysi Cochin
am 26 Feb. 2014
Kommentiert: Elysi Cochin
am 1 Mär. 2014
i have a matrix A of size 1*120 and reshaped it to matrix B of size 10*12..... is it possible to get the index values of where the value of A has gone to B in a matrix C of size 1*120....
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (3)
Jos (10584)
am 26 Feb. 2014
A short story of LINEAR vs. SUB indexing:
A = [22 33 44 55 66 77]
B = reshape(A,2,[])
numel(A),numel(B) % the same number of elements
size(A), size(B) % but with different sizes
% However, reshaping does not change the intrinsic order of the elements inside an array.
% This intrinsic order is used by linear indexing:
LinIdx = 3 % any value between 1 and numel(A)
A(LinIdx), B(LinIdx)
% Linear indices correspond to different rows and columns for A and B,
% due to the different shapes between A and B:
LIDX = 1:numel(A) % all linear indices
[rowA, colA] = ind2sub(size(A), LIDX)
[rowB, colB] = ind2sub(size(B), LIDX)
rowB is what you call C
0 Kommentare
Mischa Kim
am 26 Feb. 2014
Bearbeitet: Mischa Kim
am 26 Feb. 2014
This would do
An = 1:length(A);
nr = 10;
C(:,1) = floor((An-1)/nr) + 1;
C(:,2) = An' - nr*(C(:,1)-1);
where the first and second cols of C are the column and row indices.
0 Kommentare
Sagar Damle
am 27 Feb. 2014
C and C1,both are one and the same thing.
A = [22 33 44 55 66 77]
B = reshape(A,2,[])
temp = 1:size(B,1)
C = repmat(temp,1,size(B,2))
C1 = kron( ones(1,size(B,2)) , temp )
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!