www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/RemovingLinearTrendsFromDataExample.m
%% Remove Linear Trends from Data % This example shows how to remove a linear trend from daily closing stock % prices to emphasize the price fluctuations about the overall increase. If % the data does have a trend, detrending it forces its mean to zero and % reduces overall variation. The example simulates stock price fluctuations % using a distribution taken from the |gallery| function. % Copyright 2015 The MathWorks, Inc. %% % Create a simulated data set and compute its mean. |sdata| represents the % daily price changes of a stock. t = 0:300; dailyFluct = gallery('normaldata',size(t),2); sdata = cumsum(dailyFluct) + 20 + t/100; %% % Find the average of the data. mean(sdata) %% % Plot and label the data. Notice the systematic increase in the stock % prices that the data displays. figure plot(t,sdata); legend('Original Data','Location','northwest'); xlabel('Time (days)'); ylabel('Stock Price (dollars)'); %% % Apply |detrend|, which performs a linear fit to |sdata| and then removes % the trend from it. Subtracting the output from the input yields the % computed trend line. detrend_sdata = detrend(sdata); trend = sdata - detrend_sdata; %% % Find the average of the detrended data. mean(detrend_sdata) %% % As expected, the detrended data has a mean very close to 0. %% % Display the results by adding the trend line, the detrended data, and its % mean to the graph. hold on plot(t,trend,':r') plot(t,detrend_sdata,'m') plot(t,zeros(size(t)),':k') legend('Original Data','Trend','Detrended Data',... 'Mean of Detrended Data','Location','northwest') xlabel('Time (days)'); ylabel('Stock Price (dollars)');