Finding row indexes in array

1 回表示 (過去 30 日間)
lucksBi
lucksBi 2017 年 4 月 4 日
コメント済み: lucksBi 2017 年 4 月 17 日
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

採用された回答

Andrei Bobrov
Andrei Bobrov 2017 年 4 月 4 日
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 件のコメント
lucksBi
lucksBi 2017 年 4 月 5 日
here are .mat files of a & b matrices
lucksBi
lucksBi 2017 年 4 月 17 日
hey can you please help on this matter? i am unable to fix this issue with with given mat files.

サインインしてコメントする。

その他の回答 (1 件)

Thorsten
Thorsten 2017 年 4 月 4 日
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 件のコメント
Thorsten
Thorsten 2017 年 4 月 4 日
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 2017 年 4 月 4 日
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]

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by