24小时热门版块排行榜    

CyRhmU.jpeg
查看: 869  |  回复: 1

4758188748

新虫 (初入文坛)

[求助] 求助。matlab共享参数类的自定义公式拟合修改问题已有1人参与

是共享参数类的自定义公式模拟,目的是求5个系数,y1-x1对应q0固定系数,y2-x2对应q1固定系数,依次类推四个系数。我这个代码是肯定不行呀- -,想要知道这个能不能求帮忙修改,并且把这几个曲线绘制到一张图上,谢谢谢谢谢谢

clear
clc
data = [36.287         34.765         38.875         37.683         33.580         27.010         34.720         35.470
42.726         37.060         38.475         42.038         31.388         30.550         33.480         37.460
44.688         38.646         40.391         43.510         30.339         24.934         25.711         29.321
43.517         39.432         41.318         42.936         29.632         26.228         27.102         28.644
44.222         38.646         42.530         41.718         28.211         24.991         27.792         29.638
43.771         40.398         42.454         44.425         27.862         25.291         26.591         27.814]
q0=0;
q1=0.2;
q2=0.35;
q3=0.5;
x1 = data(:,1);
x2 = data(:,2);
x3 = data(:,3);
x4 = data(:,4);
y1 = data(:,5);
y2 = data(:,6);
y3 = data(:,7);
y4 = data(:,8);
f = @(a,b,c,d,e)[a.*x1./(b*q0^3+c*q0^2+d*q0+e);
a.*x2./(b*q1^3+c*q1^2+d*q1+e);
a.*x3./(b*q2^3+c*q2^2+d*q2+e);
a.*x4./(b*q3^3+c*q3^2+d*q3+e)]
[X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA] = lsqcurvefit(f, [1 1 1 1 1 ], [x1;x2;x3;x4],[y1;y2;y3;y4],[0 0 0 0 0 0],[],[])

回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hollya

至尊木虫 (文坛精英)

葛城?{美

【答案】应助回帖

楼主,你这个函数好像就是个线性方程,f(x)=kx, 这样拟合结果可能不太好啊。而且就算有5个参数需要似合,5个也不是相互独立的。
你看看下面的这个:其中 k1=b/a,k2=c/a,k3=d/a,k4=e/a

data = [36.287         34.765         38.875         37.683         33.580         27.010         34.720         35.470
        42.726         37.060         38.475         42.038         31.388         30.550         33.480         37.460
        44.688         38.646         40.391         43.510         30.339         24.934         25.711         29.321
        43.517         39.432         41.318         42.936         29.632         26.228         27.102         28.644
        44.222         38.646         42.530         41.718         28.211         24.991         27.792         29.638
        43.771         40.398         42.454         44.425         27.862         25.291         26.591         27.814]
q0=0;
q1=0.2;
q2=0.35;
q3=0.5;
q=[q0,q1,q2,q3]
Q=[q.^3;q.^2;q;ones(1,4)]
xdata=data(:,1:4)
ydata=data(:,5:8)
f = @(k,x) x./repmat([k(1),k(2),k(3),k(4)]*Q,6,1)
k0=[1 1 1 1]
k = lsqcurvefit(f,k0,xdata,ydata)
f_fit=f(k,xdata)
plot(xdata(:,1),ydata(:,1),'o',xdata(:,1),f_fit(:,1),...
    xdata(:,2),ydata(:,2),'*',xdata(:,2),f_fit(:,2),...
    xdata(:,3),ydata(:,3),'+',xdata(:,3),f_fit(:,3),...
    xdata(:,4),ydata(:,4),'x',xdata(:,4),f_fit(:,4))
でも私たちはきっと1000回もメールをやりとりして、たぶん心は1センチくらいしか近づけませんでした。
2楼2019-02-02 02:45:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 4758188748 的主题更新
信息提示
请填处理意见