# please, how can i make the plot on the x axis from 15 to 25 hertz to rest on the x axis. that is to make them start from zero. i have used detrend but, it is not working

2 views (last 30 days)

Show older comments

Hello can you help with the above question

##### 9 Comments

Cris LaPierre
on 18 Jul 2023

### Accepted Answer

Cris LaPierre
on 10 Jul 2023

This is likely due to the resolution of your data. The signal is not able to capture everything, so over time, the error accumulates. There are likely techniques you can use when collecting the data to minimize this. However, since you already have the signal, I think you should try higher-order detrending. Here I picked 10 based solely on how the ouput looks

fs= 1000;

T=7;

dt= 1/fs;

tspan= (0:dt:T).';

load acc.mat

yddot = acc;

ydot = cumtrapz(tspan,yddot);

ydot2 = detrend(ydot,10,"SamplePoints",tspan);

y = cumtrapz(tspan,ydot2);

plot(tspan,ydot2,tspan,y)

##### 2 Comments

Cris LaPierre
on 10 Jul 2023

Edited: Cris LaPierre
on 10 Jul 2023

Another approach might be to smooth your signal and then subtract the smoothed signal from the raw signal.

fs= 1000;

T=7;

dt= 1/fs;

tspan= (0:dt:T).';

load acc.mat

yddot = acc;

ydot_raw = cumtrapz(tspan,yddot);

smoothedData = smoothdata(ydot_raw,"lowess","SmoothingFactor",0.125);

ydot = ydot_raw - smoothedData;

y = cumtrapz(tspan,ydot);

plot(tspan,ydot,tspan,y)

Cris LaPierre
on 11 Jul 2023

Edited: John Kelly
on 2 Aug 2023

Post that was deleted

Thank you very much for your response. what of the other question i asked? did you figured it out also?

______________________________________________________________________

Response

It seems you already have the code written for that, but you are only capturing the final result from your nested for loops.

You can capture it easily enough. You just need to make Energy a matrix instead of a vector.

Change

for c = 1.5:1:5.5

...

Energy(ii) = (trapz(tspan,c*(zdot).^2));

end

to something like

dcoeffs = 1.5:1:5.5;

for jj = 1:length(dcoeffs)

c = dcoeffs(jj);

...

Energy(ii,jj) = (trapz(tspan,c*(zdot).^2));

end

### More Answers (0)

### See Also

### Community Treasure Hunt

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

Start Hunting!