MATLAB Answers

Combine logical cell array based on 'or' condition

16 ビュー (過去 30 日間)
Alex Wooten
Alex Wooten 2021 年 5 月 21 日
コメント済み: Alex Wooten 2021 年 5 月 21 日
I am trying to combine all elements of a cell array containing multiple logical arrays into a single array, where the single array has a true value if any of the logical arrays contain true at that index.
C{1,1} = logical([1;0;0;0;0]);
C{1,2} = logical([0;1;0;0;0]);
C{1,3} = logical([0;0;1;0;0]);
I know that if I wanted to combine 2 of the elements, I could do this:
or(C{1,1}, C{1,2})
This would give me the output:
ans =
5×1 logical array
1
1
0
0
0
Is there a way to combine all 3 logical arrays and get this as output? (preferably in a single operation)
ans =
5×1 logical array
1
1
1
0
0

採用された回答

DGM
DGM 2021 年 5 月 21 日
Maybe something like this:
% test array
C{1,1} = logical([1;0;0;0;0]);
C{1,2} = logical([0;1;0;0;0]);
C{1,3} = logical([0;0;1;0;0]);
Cl = any(cell2mat(C),2)
Cl = 5×1 logical array
1 1 1 0 0
  1 件のコメント
Alex Wooten
Alex Wooten 2021 年 5 月 21 日
Exactly what I was looking for, thanks!

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

その他の回答 (2 件)

Daniel Bengtson
Daniel Bengtson 2021 年 5 月 21 日
You could do something like this.
C{1,1} = logical([1;0;0;0;0]);
C{1,2} = logical([0;1;0;0;0]);
C{1,3} = logical([0;0;1;0;0]);
[~,wid] = size(C);
%false vector to use as a starting point
init = false(size(C{1,1}));
%ORs together every vector in C
for i = 1:wid
init = init | C{1,i};
end

David Fletcher
David Fletcher 2021 年 5 月 21 日
C{1,1}|C{1,2}|C{1,3}

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by