Combine logical cell array based on 'or' condition

37 views (last 30 days)
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

Accepted Answer

DGM
DGM on 21 May 2021
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

More Answers (2)

Daniel Bengtson
Daniel Bengtson on 21 May 2021
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 on 21 May 2021
C{1,1}|C{1,2}|C{1,3}

Categories

Find more on Data Distribution Plots in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!