Fitting every fifth datapoint one after another

1 次查看(过去 30 天)
Hello!
I want to do a linear regression for a bunch of data, using every fifth or third (maybe tenth) Datapoint. The data will be vary in size and therefor I need to do a function that varies as well.
I did the poly1-fit to the first 13 data already by typing it for each fit. Can you think of any way to solve it via function maybe a loop to solve this seccessively for any size of x- or y-datapoints.
I will be happy for any kind of response that helps me to solve this problem.
Thanks a lot!
The result should look like this for more datapoints:

采纳的回答

dbmn
dbmn 2016-11-8
I have a solution that avoids the loops altogehter, but might not be as readable
n = 5; % Number of datapoints
x1 = reshape(x, n, []); % please make sure, that your number will be divisable into n Elements
y1 = reshape(y, n, []);
a = (x1-x1(1,:))\(y1-y1(1,:)); % we use mldivide here and correct for the origin
a = a(1,:);
b = y1(1,:) - a.*x1(1,:); % here we shifted back
b is the offset and a the slope of your curves
  3 个评论
J.P.
J.P. 2016-11-8
Hi! Thanks for your help. But your solution gives this Error:
Error using - Matrix dimensions must agree.
Error in polyfit_Inet (line 6) a = (x1-x1(1,:))\(y1-y1(1,:)); % we use mldivide here and correct for the origin
J.P.
J.P. 2016-11-8
Okay, I changed the parts a little bit and it works!!!
n = 6; % Number of datapoints
x1 = reshape(x, n, []); % please make sure, that your number will be divisable into n Elements
y1 = reshape(y, n, []);
a = (x1(1)-x1(1,n))\(y1(1)-y1(1,n)); % we use mldivide here and correct for the origin
a = a(1,:);
b = y1(1,:) - a.*x1(1,:); % here we shifted back
figure()
hold on
hdl1 = plot(x1, y1, 'b.');
hdl2 = plot(x1, a.*x1(2,:)+b, 'r-');
But what I get now is a fit including 6 regression lines, which are shifted in parallel.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Descriptive Statistics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by