Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2012-06-22, 15:35   #1
xintu9027
初级会员
 
注册日期: 2012-06-22
年龄: 35
帖子: 1
声望力: 0
xintu9027 正向着好的方向发展
默认 简单的数据拟合程序编程,谁能帮我看看哪错了?

%设计变量
t=[0.0022 0.0022 0.0022 0.0022 0.0022 0.0022 0.0023 0.0023 0.0023 0.0023 0.0023 0.0023 0.0024 0.0024 0.0024 0.0024 0.0024 0.0024 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0026 0.0026 0.0026 0.0026 0.0026 0.0026 0.0027 0.0027 0.0027 0.0027 0.0027 0.0027]';
l=[0.1200 0.1300 0.1400 0.1500 0.1600 0.1700 0.1200 0.1300 0.1400 0.1500 0.1600 0.1700 0.1200 0.1300 0.1400 0.1500 0.1600 0.1700 0.1200 0.1300 0.1400 0.1500 0.1600 0.1700 0.1200 0.1300 0.1400 0.1500 0.1600 0.1700 0.1200 0.1300 0.1400 0.1500 0.1600 0.1700]';
a=[1.6000 1.6000 1.6000 1.7000 1.7000 1.7000 1.6000 1.6000 1.6000 1.7000 1.7000 1.7000 1.6000 1.6000 1.6000 1.7000 1.7000 1.7000 1.6000 1.6000 1.6000 1.7000 1.7000 1.7000 1.7000 1.7000 1.7000 1.8000 1.8000 1.8000 1.7000 1.7000 1.7000 1.8000 1.8000 1.8000]';
b=[1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000 1.1000 1.2000 1.3000]';
响应值
pcrg=[2.3151 2.3452 2.3721 2.3157 2.3662 2.4118 2.3587 2.3896 2.4172 2.3572 2.4088 2.4554 2.4017 2.4334 2.4616 2.3980 2.4506 2.4982 2.4440 2.4764 2.5053 2.4381 2.4918 2.5402 2.7933 2.8339 2.8699 2.7731 2.8359 2.8929 2.8384 2.8799 2.9166 2.8159 2.8797 2.9377]';
O2=[-202.9898 -201.7412 -199.7662 -197.1919 -195.1847 -193.4136 -193.8554 -193.0568 -191.4518 -189.1154 -187.2725 -185.5763 -185.3962 -184.9974 -183.7346 -181.6335 -179.9613 -178.3569 -177.5454 -177.5001 -176.5516 -174.6796 -173.1797 -171.6785 -170.4459 -170.7064 -170.0215 -168.3391 -166.9764 -165.5550 -163.6328 -164.1731 -163.7539 -162.2846 -161.0899 -159.7837]';
Or=[-49.8852 -47.0071 -44.4500 -48.0079 -45.1424 -42.5878 -50.0945 -47.2516 -44.7319 -48.2422 -45.4268 -42.9093 -50.2372 -47.4295 -44.9476 -48.4041 -45.6416 -43.1648 -50.3219 -47.5492 -45.1051 -48.5027 -45.7949 -43.3615 -48.4412 -45.7528 -43.3944 -46.7696 -44.1662 -41.8268 -48.4717 -45.8135 -43.4874 -46.8001 -44.2480 -41.9509]';
O1eq=[-256.1320 -261.5469 -266.7249 -260.0686 -265.8668 -270.9702 -240.5716 -245.7553 -250.7594 -244.1609 -249.8619 -254.9104 -226.4374 -231.4038 -236.2306 -229.6914 -235.2801 -240.2606 -213.5507 -218.3158 -222.9666 -216.4888 -221.9537 -226.8546 -205.5080 -209.9767 -214.3569 -207.8659 -213.1066 -217.8265 -194.6122 -198.9206 -203.1420 -196.7098 -201.8209 -206.4522]';
Z=[ones(36,1),t,t.^2,l,l.^2,a,a^2,b,b.^2,t.*l,t.*a,t.*b,t.*a.*b,l.*a,l.*b,l.*a.*b,a.*b,l.*t.*a.*b];
c=Z\pcrg
d=Z\O2
e=Z\Or
f=Z\O1eq


运行后,提示:
??? Error using ==> mpower
Matrix must be square.
Error in ==> xiangyingmian0621 at 25
Z=[ones(36,1),t,t.^2,l,l.^2,a,a^2,b,b.^2,t.*l,t.*a,t.*b,t.*a.*b,l.*a,l.*b,l.*a.*b,a.*b,l.*t.*a.*b];
请问我哪里错了,应该如何改?
xintu9027 当前离线   回复时引用此帖
旧 2012-06-22, 23:07   #2
jimmymacong
初级会员
 
注册日期: 2012-02-13
帖子: 12
声望力: 14
jimmymacong 正向着好的方向发展
默认 回复: 简单的数据拟合程序编程,谁能帮我看看哪错了?

我不知道是不是你不小心,Z的赋值式中有一个写错了,不该是a^2,该是a.^2下面是完整语句
Z=[ones(36,1),t,t.^2,l,l.^2,a,a.^2,b,b.^2,t.*l,t.*a,t.*b,t.*a.*b,l.*a,l.*b,l.*a.*b,a.*b,l.*t.*a.*b];

另外补充一下你还可能犯的另外一个拟合错误,Z不是一个满秩阵,因此你可能做的结果并不是你想要的结果,我建议你用伪逆指令代替你的右除指令,比如说:
c=pinv(Z)*pcrg; 这是一个良好的编程习惯,不会引起混淆。
另外告诉你求满秩方阵的逆矩阵的函数b=inv(A);
jimmymacong 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 05:59


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.