# Convert striaght lines to smooth curves

2 views (last 30 days)
Pranav Shende on 22 Aug 2022
Commented: Pranav Shende on 27 Aug 2022
Hi, I have acceleration and time data and want to create a phase diagram (displacement vs velocity).
My current plot looks like below fig 1, with straight lines connecting each point. Is it possible to change these to smooth curves as fig 2?
fig 1
fig 2
My current code is as below.
v = diff(Acc1).*diff(X_Value); %Acc1 = acceleration data and X_Value = Time
s = diff(v).*diff(X_Value(1:end-1));
figure
plot(s,v(1:end-1))

Michael on 22 Aug 2022
It looks like your sample rate was too low. I'd recollect the data at a higher sample rate.
You could try doing a cubic spline interpolation on your acceleration data to estimate intermediate time points and then rerun your code.
dt = mean(diff(X_value));
t_hiRes = 0:dt/100:max(X_value);
hiresAccel1 = interp1(X_value, Acc1, t_hirRes,'cubic');
%Same for the rest
v = diff(Acc1).*diff(X_Value); %Acc1 = acceleration data and X_Value = Time
s = diff(v).*diff(X_Value(1:end-1));
figure
plot(s,v(1:end-1))
Pranav Shende on 26 Aug 2022
Edited: Pranav Shende on 26 Aug 2022
Thanks for your help Micheal, I understand using 'diff' comes out confusing to find velocity from acceleration. I have tried using trapz and cumtrapz for my data. The problem I faced is all the values (velocty and displacement) increases/decreases with time. I believe it should follow the same trend as accleration if plotted against time as my sensors are attached to the rig fixed on a table. Ideally as below figure. I think as you mentioned the sampling frequency is too low for my data. I will be using a higher sampling frequency and try again. Or else I am missing something fundamental and need to go back to basics.

John D'Errico on 25 Aug 2022
Why in the name of god and little green apples are you differentiating acceleration? You need to INTEGRATE acceleration, once to get velocity, then again to get displacement.
Differentiating acceleration results in noisy garbage, as it probably should. You differentiated the accelerations TWICE.
T = data(:,1);
Acc = data(:,2);
vel = cumtrapz(T,Acc);
displacement = cumtrapz(T,vel);
plot(vel,displacement,'-')
Pranav Shende on 27 Aug 2022
@Michael Sure, will try that too. Thanks.

### Categories

Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!