Finding row indexes in array
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
lucksBi
el 4 de Abr. de 2017
Comentada: lucksBi
el 17 de Abr. de 2017
I have an array
a=[0 0 1 0 ; 1 2 3 0; 1 0 3 4; 0 2 0 0 ]
& cell array like
b{1,1}=[4;3]
b{2,1}=[3;1;4]
I want to find elements of cell array in a. For example: for b{2,1} 1st, 3rd and 4th row of a should be displayed and 2nd should be zero.
Thanks in advance
0 comentarios
Respuesta aceptada
Andrei Bobrov
el 4 de Abr. de 2017
a=[0 0 1 0 ; 1 2 3 0; 1 0 3 4; 0 2 0 0 ];
b{1,1}=[4;3];
b{2,1}=[3;1;4];
v = 1:size(a,1);
t = cell2mat(cellfun(@(x)ismember(v,x),b,'un',0))';
out = a.*permute(t,[1,3,2]);
7 comentarios
Más respuestas (1)
Thorsten
el 4 de Abr. de 2017
idx = cellfun(@(x) any(ismember(a, x)), b, 'UniformOutput', false);
rows = cellfun(@(x) a(:, x), idx, 'UniformOutput', false);
Or in one line:
rows = cellfun(@(x) a(:, any(ismember(a, x))), b, 'UniformOutput', false);
3 comentarios
Thorsten
el 4 de Abr. de 2017
Like this?
idx = cellfun(@(x) any(ismember(a, x)), b, 'UniformOutput', false);
a0 = zeros(size(a));
for i = 1:numel(idx)
rows{i} = a0;
rows{i}(:,idx{i}) = a(:,idx{i});
end
Ver también
Categorías
Más información sobre Data Type Conversion 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!