Loop through a cell array to use plot3

Hello, I have the cell arrays jN, jP and jC with the size of 1x20. Each entry holds a n x 1 matrix with a different size of n(each one is +10 entries bigger than the previous one). The data was generated by an ode45 solved for the time. I am trying to plot each dataset of jN, jC and jP together in a plot3 diagramm. Each data set (jC{1,1},jP{1,1} and jN{1,1})belong together and have each the same size, means that I want to plot one graph inlcuding one row of jC, jN and jP and so on until the 20th data sets all together in one diagram. I tried to loop through the entries for a plot 3 diagram but wasn't sucessfull so far.
That's what I did:
for i=1:20
hold on
plot3(jN{1,i},jC{1,i},jP{1,i})
hold off
end
But then I only get the first entries together.

 Réponse acceptée

Ive J
Ive J le 8 Déc 2020
Modifié(e) : Ive J le 8 Déc 2020
Try
for i=1:20
plot3(jN{1,i}, jC{1,i}, jP{1,i})
hold on
end
grid on
hold off
You could also concatenate your vectors and call plot3 once:
jN = vertcat(jN{:}); jC = vertcat(jC{:}); jP = vertcat(jP{:});
plot3(jN, jC, jP); % if wanna show all together

5 commentaires

Marie P.
Marie P. le 8 Déc 2020
Modifié(e) : Marie P. le 8 Déc 2020
I still just get a plot with the first entries and I do not get a 3D plot
EDIT:
With the second command, I get the same diagram but just turned around, again only with the first entries.
Marie P.
Marie P. le 8 Déc 2020
Modifié(e) : Marie P. le 8 Déc 2020
And it won't helb me to convert it horizontally becauseI want to plot each jC, jN and jP as one coordinate per dataset and not just all in one large graph..
Ive J
Ive J le 8 Déc 2020
Modifié(e) : Ive J le 8 Déc 2020
Can you try it now?
Marie P.
Marie P. le 8 Déc 2020
I did and I just added a grid to the plot with the first data set
Ive J
Ive J le 8 Déc 2020
Modifié(e) : Ive J le 8 Déc 2020
I reproduced your data structure, and got a 3D plot:
% simulate data points
[jN, jC, jP] = deal(cell(1, 20));
for i = 1:numel(jN)
jN{i} = rand(100 + 10*(i - 1), 1);
jC{i} = rand(100 + 10*(i - 1), 1);
jP{i} = rand(100 + 10*(i - 1), 1);
end
% plot them
for i=1:20
plot3(jN{1,i}, jC{1,i}, jP{1,i})
hold on
end
grid on
hold off

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by