想请问一下各位,使用nlinfit进行拟合的函数形式必须要这种b(1).*x(:,1)+b(2).*x(:,2).*x(:,1) 这种多项式的形式吗? 就是一个常数乘一个或多个变量,能否对类似[b(1).*x(:,1)+b(2).*x(:,2).x(:,1) ].[b(3).*x(:,3)+b(4)]这种多项式乘多项式的形式的进行拟合,我用nlinfit函数做了个拟合,函数形式写的多项式乘多项式,最后的结果跟样本数据差很多,而且不同变量下只能画出一个图,要把r变量数值拉的很大才能出现第二个图,是不是用的工具的原因,对多项式乘多项式进行拟合之后出现错误,有没有什么函数可以实现多项式对多项式的拟合,我这边对压缩机传统的十系数法做修正,但是根据论文给出的拟合公式拟合后和样本数据根本对不上
```c++
clear;clc;close all;
%读取WHP15600压缩机不同蒸发、冷凝、转速下系统制冷量、耗功
T = readmatrix('WHP15600.xlsx')
Te=T(:,1);
Tc=T(:,2);
r=T(:,3);
Q=T(:,4);
W=T(:,5);
%建立nlinfit函数预测变量矩阵及响应变量矩阵
X=[Te Tc r];
Y=Q;
%建立拟合公式形式
beta0=rand(3,1)
%调用nlinfit函数对现有数据进行拟合,并返回均方误差
[beta, r, J,MSE]=nlinfit(X, Y, @modelfun, beta0)
b=beta
%绘制原数据散点图
scatter3(Te,Tc,Q,"yellow","filled")
xlabel("蒸发温度")
ylabel("冷凝温度")
zlabel("制冷量")
hold on
%绘制拟合数据曲面图
for i=1:1:7
Tefit = (min(Te):0.05:max(Te))';
Tcfit = (min(Tc):0.05:max(Tc))';
[TeFIT,TcFIT] = meshgrid(Tefit,Tcfit) ;
r=1000.*i;
QFIT = 14407.93786+499.3406452.*TeFIT-96.09244739.*TcFIT+7.10989898726285.*(TeFIT.^2)-2.67794148709632.*TeFIT.*TcFIT-0.235081884020656.*(TcFIT.^2)+0.0321184263110225.*(TeFIT.^3)-0.0462110253653584.*(TeFIT.^2).*TcFIT-0.0120112739321796.*TeFIT.*(TcFIT.^2)-0.00036678245335872.*(TcFIT.^3).*(b(1).*((r-3000).^2)+b(2).*(r-3000)+b(3));
mesh(TeFIT,TcFIT,QFIT)
end
function nihe=modelfun(b,x)
nihe=((14407.93786+499.3406452.*x(:,1)-96.09244739.*x(:,2)+7.10989898726285.*(x(:,1).^2)-2.67794148709632.*x(:,1).*x(:,2)-0.235081884020656.*(x(:,2).^2)+0.0321184263110225.*(x(:,1).^3)-0.0462110253653584.*(x(:,1).^2).*x(:,2)-0.0120112739321796.*x(:,1).*(x(:,2).^2)-0.00036678245335872.*(x(:,2).^3)).*(b(1).*((x(:,3)-3000).^2)+b(2).*(x(:,3)-3000)+b(3)));
end
```