How do you plot elements of a cell array?

Given a cell array where each element contains a vector of numbers of type double, I select a few elements to analyze. They are all collected for the same x data. In general, how would I generate a figure with plots of any arbitrary number of cell array elements of vectors of type double?
Would it make sense to output the desired cell array elements into a matrix and then plot that? The corresponding matrix of x values would (I think) be the same size, and the columns would be identical to one another since the x data are the same. If that's the case, how do I do that?

 Accepted Answer

Loop through your cells and use the hold on then hold off command.
cellData{1} = [(1:20)',(1:20)' + rand(20,1)];
cellData{2} = [(1:20)',2*(1:20)' + rand(20,1)];
cellData{3} = [(1:20)',3*(1:20)' + rand(20,1)];
cellData{4} = [(1:20)',4*(1:20)' + rand(20,1)];
hold on
for CellColumn = 1:length(cellData)
plot(cellData{CellColumn}(:,1),cellData{CellColumn}(:,2),'-o')
end
hold off

4 Comments

But how do I do this for arbitrary number of cell arrays? Here you selected 4, but what if that input can change? I'd like it to be a bit more robust.
@L'O.G. he just created 4 because you forgot to read the Community Guidelines and therefor forgot to attach your data, so he had to make up some. He just chose 4 arbitrarily. However if you look at the loop:
for CellColumn = 1:length(cellData)
plot(cellData{CellColumn}(:,1),cellData{CellColumn}(:,2),'-o')
end
you'll see that it is general and will work for any number of cells in the cell array.
See the FAQ:
Any way to do this by avoiding for loops? I have a large cell array and I find that the plot(x,y); hold on really slows down the plotting.
Can you give an example of what your data looks like?

Sign in to comment.

More Answers (0)

Products

Release

R2021b

Asked:

on 13 Jan 2023

Commented:

on 8 May 2023

Community Treasure Hunt

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

Start Hunting!