problem with detrending data
4 views (last 30 days)
Show older comments
Hi, I wrote the code below to remove trends :
%%Removing trends without using detrend code
t = length(pass);
y = pass;
[r m b] = regression(t,y);
for t_pass = 1:t
y_pass(t_pass) = m * t_pass;
res(t_pass) = pass(t_pass) - y_pass(t_pass);
end
figure(3)
plot(y_pass)
but it isn't correct and I get wrong answer. would anyone help to how I should change this code to detrend my data?
2 Comments
Rik
on 30 Mar 2017
You are only plotting y_pass. Was that your intention, or should you plot res against y_pass?
BTW, it might be helpful to attach a sample of your data, as the succes of de-trending depends enormously on what data you put in.
Accepted Answer
Star Strider
on 30 Mar 2017
Try this:
t = 0:50; % Create ‘t’
y = sin(2*pi*t/5)+5 + t/5; % Create ‘y’
b_orig = polyfit(t,y,1); % Fit Linear Regression
y_detrend = y - polyval(b_orig, t); % Detrend Data
b_dt = polyfit(t,y_detrend,1);
figure(1)
plot(t, y,'-b', t,polyval(b_orig,t),'--r')
hold on
plot(t,y_detrend, '-k', t,polyval(b_dt,t),'--r')
hold off
See the documentation for the legend function to understand how to add the legend to your plot.
4 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!