matlab在进行多项式拟合的时候出现无法拟合出曲线的情况,也没有报错!
读取的数据
程序如下:
fileName='materialData.xlsx';
%fileId=open("fileName")
data=xlsread(fileName,'Sheet1','A2:D8');
figure(1)
hold on
%Q235B
plot(data(:,1),data(:,2),'*')
p1=polyfit(data(:,1),data(:,2),3);
plot((20:300),polyval(p1,(20:300)))
Q235B=polyval(p1,175)
%20
plot(data(:,1),data(:,3),'o')
p2=polyfit(data(:,1),data(:,3),3);
plot((20:300),polyval(p2,(20:300)));
steel20=polyval(p2,175)
%Q345R
plot(data(:,1),data(:,4),'x')
p3=polyfit(data(:,1),data(:,4),3);
plot((20:300),polyval(p3,(20:300)))
Q345R=polyval(p3,175)
legend( 'Q235B原始数据','Q235B拟合曲线数据', ...
'20钢原始数据','20钢拟合曲线数据', ...
'Q345R原始数据','Q345R拟合曲线数据')
xlabel('温度/℃')
ylabel('弹性模量/KN/mm')
结果如下:
我以为有几个空数据不会影响polyfit函数拟合,但是就是这几个空数据导致无法拟合出系数
于是修改如下,这种方法比较笨。就是不读取空的数据。我觉得还有更好的方法就是检测矩阵中是否有空数据有的话就舍弃该点的数据。
fileName='materialData.xlsx';
%fileId=open("fileName")
data=xlsread(fileName,'Sheet1','A2:D8')
figure(1)
hold on
%Q235B
plot(data(:,1),data(:,2),'*')
p1=polyfit(data(:,1),data(:,2),3);
plot((20:300),polyval(p1,(20:300)))
Q235B=polyval(p1,175)
%20
plot(data(:,1),data(:,3),'o')
p2=polyfit(data(:,1),data(:,3),3);
plot((20:300),polyval(p2,(20:300)));
steel20=polyval(p2,175)
%Q345R
plot(data(:,1),data(:,4),'x')
%修改部分----------------
p3=polyfit([data(1:3,1);data(7,1)],[data(1:3,4);data(7,4)],3);
%修改部分----------------
plot((20:300),polyval(p3,(20:300)))
Q345R=polyval(p3,175)
legend( 'Q235B原始数据','Q235B拟合曲线数据', ...
'20钢原始数据','20钢拟合曲线数据', ...
'Q345R原始数据','Q345R拟合曲线数据')
xlabel('温度/℃')
ylabel('弹性模量/KN/mm')
%还可优化,我就是想说一点,如果读取的数据有空的话可能导致polyfit函数无法拟合多项式系数
最后结果
总结:还可优化的更好,我就是想说一点,如果读取的数据有空的话可能导致polyfit函数无法拟合多项式系数