Index a cell array with an cell
Show older comments
Hi all
I have a cell array
C {1x2}
C{1} 1x180 values
C{2} 1x1260 values
and B with the same size containing zeros and ones. Now I want to do something:
C{B}=[]; to delete all entries of C where B contains a one whearas if B contains a zero all values should be maintained.
How can i do this?
Thank you!
Answers (1)
Jorg Woehl
on 4 Mar 2021
Hi Christian,
You can pick the corresponding entries for each of the cells of C as follows:
C{i}(B{i}==0)
The results are then easily combined into a new cell array, as shown in this short example:
C = {[1 2 3], [10 11 12 13 14 15 16]}
B = {[0 1 1], [ 0 1 0 0 1 1 0]}
newC = {C{1}(B{1}==0), C{2}(B{2}==0)}
The newC cell array now contains {[1], [10 12 13 16]}.
4 Comments
CSCh
on 4 Mar 2021
Jorg Woehl
on 4 Mar 2021
Could you send a command for building (shortened) examples for the cell arrays C and B, like in my code above? Sending the output from
C
B
may also be helpful, as a start.
I am still not sure how your cell arrays are structured; it looks like C may be a 1-by-2 (or 2-by-1?) array of cells, each containing a cell array of scalars... but whatever I tried, I don't get the same error you are referring to. An example would make it clear what we are dealing with.
CSCh
on 8 Mar 2021
Jorg Woehl
on 8 Mar 2021
Sounds good - cell arrays can indeed be tricky to create and work with. Thanks for the follow-up.
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!