head34 2022-06-28 11:39 采纳率: 100%
浏览 149
已结题

数据线性拟合结果与实际情况不符,越来越偏。

问题遇到的现象和发生背景

问题背景:从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;


我想要达到的结果

期望拟合结果能跟实际对应上。

  • 写回答

1条回答 默认 最新

  • 胸毛男 2022-06-28 19:03
    关注

    B变量看起来不是每次都清空,建议

    ...
    for i=1:floor(a/20) %根据步进的循环数自行调整
    B=zeros(10,b);
    B(:,:)=A(20*(i-1)+1:20*(i-1)+10,:);%挑选出的加载段数据赋值给B
    ...
    

    这样的话应该是每段拟合。
    我觉得这是每次都截取10行,拟合不好是因为带上了上次的数据,局部线性,好几个局部在一起就不线性了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月28日
  • 赞助了问题酬金20元 6月28日
  • 创建了问题 6月28日

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?