Finding row indexes in array

2 visualizzazioni (ultimi 30 giorni)
lucksBi
lucksBi il 4 Apr 2017
Commentato: lucksBi il 17 Apr 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

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 4 Apr 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 Commenti
lucksBi
lucksBi il 5 Apr 2017
here are .mat files of a & b matrices
lucksBi
lucksBi il 17 Apr 2017
hey can you please help on this matter? i am unable to fix this issue with with given mat files.

Accedi per commentare.

Più risposte (1)

Thorsten
Thorsten il 4 Apr 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 Commenti
Thorsten
Thorsten il 4 Apr 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
lucksBi
lucksBi il 4 Apr 2017
result should be like: result{1,1}= [0,0,0,0;0,0,0,0;1,0,3,4;0,2,0,0] result{1,2}= [0,0,1,0;0,0,0,0;1,0,3,4;0,2,0,0]

Accedi per commentare.

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

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

Start Hunting!

Translated by