How do you remove a trend from data without using the 'detrend' function?

6 views (last 30 days)
%I have imported data into matlab and plotted the data onto a graph. I am having difficulty removing the trend without using the 'detrend' function. Any ideas on how to start this process?
A = dlmread('signal_1.txt');
x= A(:,1);
y= A(:,2);
plot(x,y);
xlabel('Time(s)');
ylabel('Amplitude');
How would i achieve this goal?

Answers (2)

the cyclist
the cyclist on 19 Feb 2020
Usually, when someone "doesn't want" to use a function, it means that it is homework, and they are not allowed to use a function, and are instead trying to learn something.
Here is a hint: In base MATLAB, you could use the polyfit function to find the line of best fit. That's the trend line. Then figure out how to subtract it out of your data.

Image Analyst
Image Analyst on 27 Jul 2022
You could use the findpeaks function to find valleys in the data, then interpolate those everywhere with interp1
Here's an untested start. Adapt as needed.
[valleyValues, indexes] = findpeaks(-y);
yBaseline = interp1(x(indexes), -valueValues, x);
yCorrected = y - yBaseline;

Community Treasure Hunt

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

Start Hunting!