Borrar filtros
Borrar filtros

is it possible to get index of reshaped matrix

15 visualizaciones (últimos 30 días)
Elysi Cochin
Elysi Cochin el 26 de Feb. de 2014
Comentada: Elysi Cochin el 1 de Mzo. de 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....

Respuesta aceptada

Iain
Iain el 26 de Feb. de 2014
The functions ind2sub and sub2ind, give you a more general way of doing it, which expands to more dimensions...
  2 comentarios
Elysi Cochin
Elysi Cochin el 26 de Feb. de 2014
if i have a matrix
A = [22 33 44 55 66 77]
and i reshape it to
B = [22 44 66
33 55 77]
i want C = [1 2 1 2 1 2].... how to do it...
Iain
Iain el 26 de Feb. de 2014
Editada: Iain el 26 de Feb. de 2014
temporary = 1:numel(A);
C = mod(temporary ,size(B,1))+1;

Iniciar sesión para comentar.

Más respuestas (3)

Jos (10584)
Jos (10584) el 26 de Feb. de 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

Mischa Kim
Mischa Kim el 26 de Feb. de 2014
Editada: Mischa Kim el 26 de Feb. de 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.

Sagar Damle
Sagar Damle el 27 de Feb. de 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 )

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by