Hi,
I need a fast and simple way to calculate the trend of a variable at each point in time for data over the preceding 1 hour. All I need is whether the trend is increasing or decreasing and to what degree. At the moment I am using fitlm to return the slope for each row but have found this to be too slow. Below is a simple example but my application has a much bigger dataset and I need at least an order of magnitude speedup. Appreciate some help please, especially if there are ways to vectorize the calculation. Thank you.
time=[0.2,0.8,0.9,1.1,1.2,1.7,1.8,2.1,2.2]; x=[0.2,0.4,0.5,0.7,1.1,0.7,0.6,1.7,2.1]; slopes=repmat(NaN,length(x),1); for row=1:length(x) startrow=find(time >= time(row)-1,1); %calculate slope if there are more 2 or more data points
if row > startrow temptime=time(startrow:row); tempx=x(startrow:row); mdl = fitlm(temptime,tempx); slopes(row)=mdl.Coefficients.Estimate(2); end end
Best Answer