Using 3d matrix inmatlab

A(:,:,1) =
1 1 0
0 1 1
1 1 1
A(:,:,2) =
1 0 0
0 0 1
0 0 1
I used [r,c,v] = ind2sub(size(A),find(A == 1)); to find r,c,v in matrix A that has a value 1. But I want to place a condition that while A == 1 then I(r,c) = v
for example I(1,1) = {1,2} since for v=1,2 A takes a value 1. Please help me out with a code.

 Respuesta aceptada

Matt J
Matt J el 29 de Mayo de 2013
Editada: Matt J el 29 de Mayo de 2013

0 votos

[m,n,p]=size(A);
s=reshape(1:p,1,1,p);
A=bsxfun(@times,A,s);

4 comentarios

jana
jana el 29 de Mayo de 2013
I wanted to put them as sets. example I(1,1) = {1,2} that is (1,1) takes value 1 at v ={1,2}. My matrix should look more like : [{1,2} 1 1; 0 1 {1,2}; 1 1 {1,2}]
Matt J
Matt J el 29 de Mayo de 2013
Editada: Matt J el 29 de Mayo de 2013
[m,n,p]=size(A);
s=reshape(1:p,1,1,p);
l=num2cell(bsxfun(@times,A,s),3);
l=cellfun(@(c) nonzeros(c).',l,'uni',0);
l(cellfun('isempty',l))={0}
jana
jana el 29 de Mayo de 2013
l=cellfun(@(c) nonzeros(c).',l,'uni',0); it shows an error message : Input # 2 expected to be a cell array, was double instead.
jana
jana el 29 de Mayo de 2013
Navermind I fixed it. Thankyou!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 29 de Mayo de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by