Find equal rows between cell array and matrix into for loop

1 回表示 (過去 30 日間)
Riccardo Rossi
Riccardo Rossi 2019 年 7 月 18 日
コメント済み: Bruno Luong 2019 年 7 月 18 日
Hi everybody,
i have a matrix (A) and a cell array (B) as follow:
A
-0.11 7.17 3.66
-0.09 3.45 1.55
-0.21 2.17 9.87
-0.14 4.88 6.66
B{1,1} B{1,2}
-0.09 3.45 1.55 -0.14 4.88 6.66
I need to detect the number of row of A equal to B{1,1} and B{1,2}. In this exemple i need to create a matrix or a cell array C as follow:
C
2
4
Thank you very much!
Riccardo

採用された回答

Bruno Luong
Bruno Luong 2019 年 7 月 18 日
編集済み: Bruno Luong 2019 年 7 月 18 日
Try this:
A=[-0.11 7.17 3.66
-0.09 3.45 1.55
-0.21 2.17 9.87
-0.14 4.88 6.66]
B{1,1} = [-0.09 3.45 1.55]
B{1,2} = [-0.14 4.88 6.66]
C = find(ismember(A,cat(1,B{:}),'row'))
  2 件のコメント
Riccardo Rossi
Riccardo Rossi 2019 年 7 月 18 日
Thank you for your answer. It runs!
Do you know if it is possible to obtain the following result?:
C
2 1
4 2
with the second column that represent the correspondent cell of B (respectively B{1,1} B{1,2}).
Thanks
Bruno Luong
Bruno Luong 2019 年 7 月 18 日
bnum = repelem((1:numel(B))',cellfun('size',B(:),1))
[tf,bloc] = ismember(A,cat(1,B{:}),'row');
C = [find(tf),bnum(bloc(tf))]

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

その他の回答 (1 件)

Alex Mcaulley
Alex Mcaulley 2019 年 7 月 18 日
A = [
-0.11 7.17 3.66
-0.09 3.45 1.55
-0.21 2.17 9.87
-0.14 4.88 6.66];
B = {[-0.09 3.45 1.55],[-0.14 4.88 6.66]};
[~,C] = ismember(cell2mat(B'),A,'rows')

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by