问题遇到的现象和发生背景
问题背景:从txt中循环取出数据即每隔几行取几行,并将取出的数据线性拟合。
问题现象:数据挑选没问题,但是循环程序输出的拟合优度越来越差,从0.99几到0.7几递减。如果将拟合度差的那段数据单独挑出来拟合,数据点又呈很好的线性分布,拟合优度也非常好能达到0.99多。
问题相关代码,请勿粘贴截图
clear all;
A=importdata( 'test.txt');
[a,b]=size(A);%识别A的行数;
D1=[];%输出加载段斜率、截距、拟合优度
D2=[];%输出卸载段斜率、截距、拟合优度
for i=1:floor(a/20) %根据步进的循环数自行调整
B(10*(i-1)+1:10*(i-1)+10,:)=A(20*(i-1)+1:20*(i-1)+10,:);%挑选出的加载段数据赋值给B
x1=B(:,2);%应变
y1=B(:,7);%荷载
p1=polyfit(x1,y1,1);
c1=p1(:,1);
d1=p1(:,2);%把拟合后一次函数的系数提取出来,以回归拟合后的y值
R1=1 - (sum(((c1*x1+d1)- y1).^2) / sum((y1 - mean( y1)).^2));
C1=[p1,R1];
D1=[D1;C1];
E(10*(i-1)+1:10*(i-1)+10,:)=A(20*(i-1)+11:20*(i-1)+20,:);%挑选出的卸载段数据赋值给E
x2=E(:,2);
y2=E(:,7);
p2=polyfit(x2,y2,1);
c2=p2(:,1);
d2=p2(:,2);%把拟合后一次函数的系数提取出来,以回归拟合后的y值
R2=1 - (sum(((c2*x2+d2)- y2).^2) / sum((y2 - mean(y2)).^2));
C2=[p2,R2];
D2=[D2;C2];
end
m=D1(:,1);
n=D2(:,1);
o=m./n;
我想要达到的结果
期望拟合结果能跟实际对应上。