Filter löschen
Filter löschen

Plotting 3D points from numerous arrays

1 Ansicht (letzte 30 Tage)
Konstantinos Belivanis
Konstantinos Belivanis am 7 Nov. 2014
Beantwortet: Daniel Iyinomen am 7 Jun. 2018
Hello all,
I have 210 arrays each one representing the x,y,z coordinates of a point (70 points). My arrays are named Point_1_x, Point_1_y, Point_1_z, etc.
I want to plot a 3D plot of the 70 points at a specific time (assume 20,1 cell in all arrays.
Is there a way to write a loop for the whole procedure with i ranging from 1 to 70 to create this plot as automatically as possible?
Thank you in advance.

Akzeptierte Antwort

Konstantinos Belivanis
Konstantinos Belivanis am 7 Nov. 2014
Well actually, you appented all the points. What I would like is to show all the points (70 points in one plot) at the same time (t=20) in one plot.
  4 Kommentare
Orion
Orion am 7 Nov. 2014
this should work
t=20;
% init
X_Coords = zeros(70,1);
Y_Coords = zeros(70,1);
Z_Coords = zeros(70,1);
% loop on 70 files for the time t
for i=1:70
X_Coords(i) = eval(sprintf('Point_%d_x(t,1)',i));
Y_Coords(i) = eval(sprintf('Point_%d_y(t,1)',i));
Z_Coords(i) = eval(sprintf('Point_%d_z(t,1)',i));
end
% draw
plot3(X_Coords,Y_Coords,Z_Coords,'+');
Konstantinos Belivanis
Konstantinos Belivanis am 8 Nov. 2014
Thanks a lot!!! The eval(sprintf('Point_%d_x(t,1)',i)) was what I was looking for :)
Solved!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Orion
Orion am 7 Nov. 2014
I don't have data to work with and see the validity of the result, but I guess you need something like
% create array by concatenating the vectors for each directions.
% assuming all Point_1_x, Point_1_y, Point_1_z, etc. are columns vectors.
AllXdat = [];
AllYdat = [];
AllZdat = [];
for i = 1:70
AllXdat = [AllXdat eval(sprintf('Point_%d_x',i))];
AllYdat = [AllYdat eval(sprintf('Point_%d_y',i))];
AllZdat = [AllZdat eval(sprintf('Point_%d_z',i))];
end
% define the time you want to plot, and get the corresponding spatial values,
% assuming the value fot t = 20 is at the 20th position in the vectors : Point_1_x(20),...
mytime = 20;
XatTime = AllXdat(mytime,:);
YatTime = AllYdat(mytime,:);
ZatTime = AllZdat(mytime,:);
% plot at the desired time
plot3(XatTime,YatTime,ZatTime);
  1 Kommentar
Konstantinos Belivanis
Konstantinos Belivanis am 8 Nov. 2014
Could I add the name of each point next to each point? (to be able to identify them on the graph)?

Melden Sie sich an, um zu kommentieren.


Daniel Iyinomen
Daniel Iyinomen am 7 Jun. 2018
How can I use Surf to plot 3D graph from a text file. The text is attached and the auto-generated surface is also attached. My problem is drawing the attached auto-generated plot in MATLAB using the attached text file. Please, any help?

Community Treasure Hunt

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

Start Hunting!

Translated by