Borrar filtros
Borrar filtros

Replace a value with matrix n x m

3 visualizaciones (últimos 30 días)
Muammar
Muammar el 5 de Dic. de 2011
Hii.... I want to ask how to replace a value with a matrix n x m. Ex: a = (perms[2])', if a(1)=1, replace a(1)with [1 1;1 1], if a(1)=2, replace it with [2 2;2 2].
Thank you
Muammar

Respuesta aceptada

Walter Roberson
Walter Roberson el 5 de Dic. de 2011
You cannot replace a scalar element of a numeric matrix with a non-scalar.
What you could do is
a = num2cell((perms[2])');
Then
a{1} = a{1} * ones(2,2);
Notice the curly-bracket indexing rather than round-bracket indexing.
  7 comentarios
Walter Roberson
Walter Roberson el 5 de Dic. de 2011
Your comment about permutations would seem to indicate that you want to get out the matrix
[[1 1;1 1],[2 2;2 2]; [2 2;2 2], [1 1; 1 1]]
which would be
[1 1 2 2; 1 1 2 2; 2 2 1 1; 2 2 1 1]
which would be a 4 x 4 matrix, not a 1 x 2 matrix.
My *guess* is that what you really are looking for is ndgrid:
[P,Q] = ndgrid(numel(data), numel(data));
P = P(:);
Q = Q(:);
Then permutation #K would be
[data(P(K)), data(Q(K))]
so the n x 2 matrix formed by [P,Q] would be pairwise indices in to the data:
PQ = [P,Q];
the K'th row of which would be used to fetch the K'th permutation:
data(PQ(K,:))
Muammar
Muammar el 5 de Dic. de 2011
I will try this one, actually what i need is similar to your first answer,"a{1} = a{1} * ones(2,2);", but i cant make it a numerical values. But, thank you..

Iniciar sesión para comentar.

Más respuestas (2)

Sean de Wolski
Sean de Wolski el 5 de Dic. de 2011
Maybe:
data1 = ones(2);
data2 = magic(2);
D = [data1;data2];
D2 = reshape(flipdim(reshape(D',size(data1,1),size(data1,2),[]),3),size(D))
?
  9 comentarios
Muammar
Muammar el 5 de Dic. de 2011
All.. I am sorry if its not clear
Muammar
Muammar el 5 de Dic. de 2011
it should be 2 x 2 matrix

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 5 de Dic. de 2011
I agree with the others - unclear. Perhaps you mean this:
m = randi(9, [1 4]) % Sample row vector with random integers
m2 = imresize(m, 2, 'nearest') % Do the replication.
Results:
m =
7 8 2 5
m2 =
7 7 8 8 2 2 5 5
7 7 8 8 2 2 5 5
So maybe you can just simply use imresize to get what you want.
  1 comentario
Muammar
Muammar el 5 de Dic. de 2011
I am so sorry if it is not clear

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by