# How to select which plots to print (or not) out of a cell matrix?

1 view (last 30 days)
Dandro18048 on 13 Jun 2021
Edited: Dandro18048 on 14 Jun 2021
So I have a cell matrix of 21x14, each cell contains an array with 2 columns of data (x and y for exmaple), I get the average of these values and get just 1 graph out of each cell. The problem is that some of the cells are empty (just zero values), and this depends on my data, so it changes everytime I add new (or remove) data. I don't know how to tell Matlab to print only the plots of nonzero data, other wise I end up with 294 graphs after almost 2 hours of processing time from which a lot are just empty graphs.
Im using a for loop to get the averages and plots of each cell.

Abhinav Gupta on 13 Jun 2021
You can use the built-in method all() of matlab to check, if all array elements are nonzero or not. As every element of your cell matrix is a matrix of say n rows and 2 columns, you could use all() method before plotting the graph for each cell.For eg.
>> B = [0 0; 0 0; 0 0; 0 0]
B =
0 0
0 0
0 0
0 0
>> all(B(:)==0)
ans =
logical
1
>> A = [1 0; 0 0; 1 2; 0 0]
A =
1 0
0 0
1 2
0 0
>> all(A(:)==0)
ans =
logical
0
Plot the graph only when you get 0 as the output.
Dandro18048 on 14 Jun 2021
Thank you for your answer! Unfortunately when I try to use the function all for the cells I get the following error: Undefined fucntion 'all' for input argumetns of type 'cell'.
I managed to solve the problem using an if statement and an apprach kinda like yours with the help of the function cell2mat. So will accept the answer for being the only useful answer I got!