作业帮 > 综合 > 作业

请问这个函数用Matlab怎么表示Y=w1*Xk1+ w2*Xk2+ w3*Xk3+ w4*Xk4+ w5*Xk5+ w

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 07:33:32
请问这个函数用Matlab怎么表示Y=w1*Xk1+ w2*Xk2+ w3*Xk3+ w4*Xk4+ w5*Xk5+ w6*Xk6+w7.
上面的k变量在X的右上角位置.在Word上写好的的公式复制过来 K就从X的右上角跑下来了.
;f=@(w x) w(1)*(x(:,1).^w(2))+w(3)*(x(:,2).^w(4))+w(5)*(x(:,3).^w(6))+w(7)*(x(:,4).^w(8))+w(9)*(x(:,5).^w(10))+w(11)*(x(:,6).^w(12))+w(13);
w0=[1 1 1 1 1 1 1 1 1 1 1 1 1]';
opt=optimset('TolFun',1e-3,'TolX',1e-3);%
[p R]=nlinfit(x,y,f,p0,opt)这个程序运行后出现了这样的错误:
Error using nlinfit (line 121)
Error evaluating model function '@(p,x)p(1)*(x(:,1).^p(2))+P(3)*(x(:,2).^p(4))+p(5)*(x(:,3).^p(6))+p(7)*(x(:,4).^p(8))+p(9)*(x(:,5).^p(10))+p(11)*(x(:,6).^p(12))+p(13)'.
Caused by:
Undefined function 'P' for input arguments of type 'double'.
我不知道到底是哪出错了?我的适应函数是不是写错了?
Y=w1*X.^k1+ w2*X.^k2+ w3*X.^k3+ w4*X.^k4+ w5*X.^k5+ w6*X.^k6+w7
如果X只是一个数,则X后的“.”可以不要.
再问: 谢谢你。我貌似没有把问题说清楚。Y=w1*X1w2+ w3*X2w4+ w5*X3w6+ w7*X4w8+ w9*X5w10+ w11*X6w12+w13 ,如果k都改成w,w2,w4,w6,w10,w12在各个X分量的左上角。 程序如下 x1=[]',x2=[]',x3=[]',x4=[]',x5=[]',x6=[]',([]里是测试数据),x=[x2 x2 x3 x4 x5 x6],y=[测试数据]' ;f=@(w x) w(1)*(x(:,1).^w(2))+w(3)*(x(:,2).^w(4))+w(5)*(x(:,3).^w(6))+w(7)*(x(:,4).^w(8))+w(9)*(x(:,5).^w(10))+w(11)*(x(:,6).^w(12))+w(13);
再答: 看不出哪里错,是不是与数据精度有关。用format来统一定义一下能不能解决? 最好能看到完整的程序和数据。
再问: 你好! 我能加我QQ吗? 我QQ号是522766951