Plot X, Y, Z axes with respect to time

40 views (last 30 days)
Navin Johnson
Navin Johnson on 20 Mar 2022
Commented: Voss on 21 Mar 2022
So I have a file which contains the accelerometer values of a phone. The CSV file contains time, x, y and z columns. I am trying to find a way to plot the 3 axes (x, y and z) vs. time into one graph rather than using 'stackedplot'. How would one go about this?

Accepted Answer

Voss
Voss on 20 Mar 2022
% making up some data:
t = 0:0.01:10;
x = cos(t);
y = sin(t);
z = t;
% plot x,y,z vs t in one plot:
figure();
plot(t,x,t,y,t,z);
legend('x','y','z');
xlabel('t');
grid on
% or make a 3d line whose points are (x,y,z):
figure();
plot3(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
box on
grid on
  8 Comments
Navin Johnson
Navin Johnson on 21 Mar 2022
Hi! Thank you so much for your time and answers! It works!
Voss
Voss on 21 Mar 2022
Excellent! You're welcome!

Sign in to comment.

More Answers (1)

VBBV
VBBV on 20 Mar 2022
Edited: VBBV on 20 Mar 2022
x_back_accel = cell2mat(backside_accel(:,1));
y_back_accel = cell2mat(backside_accel(:,2));
z_back_accel = cell2mat(backside_accel(:,3));
plot(t,x_back_accel,t,y_back_accel,t,z_back_accel);
Convert them to double array and plot it.
  5 Comments
VBBV
VBBV on 21 Mar 2022
Edited: VBBV on 21 Mar 2022
You can use readmatrix function instead of readtable when importing data and to plot them using your initial code without having to use cell2mat
backside_accel = readmatrix('Lab5-Phone-BackSide/accelerometer.csv');
t = 0:0.1:4;
x_back_accel = backside_accel(:,1);
y_back_accel = backside_accel(:,2);
z_back_accel = backside_accel(:,3);
figure()
plot(t,x_back_accel,t,y_back_accel,t,z_back_accel);

Sign in to comment.

Categories

Find more on Line Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!