Do a cross-set operation on a matrix
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a matrix which looks as follows:
[1 2 3;
4 5 6]
I want to do a cross-set operation on itself, so that each element is associated with every other element, like this:
[1 2 3;
4 2 3;
1 5 3;
4 5 3;
1 2 6;
4 2 6;
1 5 6;
4 5 6]
Can someone please help me/point me in right direction?
0 comentarios
Respuesta aceptada
Sean de Wolski
el 10 de Abr. de 2012
A = [1 2 3; 4 5 6]; %data
[xx yy zz] = meshgrid(1:2,3:4,5:6); %column-wise linear indices
B = [A(xx(:)) A(yy(:)) A(zz(:))] %extract
More - generalized to n-dimensions and rows:
A = [1 2 3 7; 4 5 6 9]; %data
[nr nc] = size(A);
C = num2cell(reshape(1:(nr*nc),nr,nc),1);
X = cell(nc,1);
[X{1:nc}] = ndgrid(C{:}); %column-wise linear indices
for ii = nc:-1:1
V(:,ii) = A(reshape(X{ii},[],1));
end
5 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!