Plot Matrices stored in Cell Array

I have a 1by2 cell array that has the following elements
C{1}= [ 1 2 3 4 5 6]
C{2}= [987 877 77 666 777 66 77 ]
I want to plot these matrices C{1} and C{2} on the same graph.
Pleas help.

 Accepted Answer

You can plot elements of a cell array on the same graph by holding the axes. For example,
C{1} = [1 2 3 4 5 6];
C{2} = [987 877 77 666 777 66 77];
fig = figure();
ax = axes();
hold(ax);
for i = C
plot(i{:});
end

7 Comments

Hey Ameer, this code works perfectly fine when the X-axes starts from zero for both the cells.
However, the X-axes for C{2} in my case starts from 10.
I am sorry, I forgot to mention this in the original question. Can you help with that?
How is your data available. Do you have seperate cell array for the x-coordinates and y-coordinetes?
For example, If you have two arrays Cx and Cy for x-coordinates and y-coordinates respectively then you can try following
Cx{1} = [1 2 3 4 5 6];
Cx{2} = [10 11 12 13 14 15 16];
Cy{1} = [1 2 3 4 5 6];
Cy{2} = [987 877 77 666 777 66 77];
fig = figure();
ax = axes();
hold(ax);
for i = 1:length(Cx)
plot(Cx{i}, Cy{i})
end
I have cell arrays for Y-coordinates. I am figuring out a way to make cell arrays for the X-coordinate too.
If you have both cell arrays, then you can use the code in the above comment.
How do I find the index of the last element of each cell ?
For example; C{1}= [1 2 3 4 5 6]; and C{2} = [987 877 77 666 777 66 77];
I need the index of 6 from C{1} and that of 77 from C{2}.
expected answer,
index_end_C1=6
index_end_C2=7
You can get the index of last element using this
cellfun(@(x) numel(x), C)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!