matlab y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52)) Matrix dimensions must agree????
答案:1 悬赏:30 手机版
解决时间 2021-11-30 19:00
- 提问者网友:战皆罪
- 2021-11-30 00:48
matlab y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52)) Matrix dimensions must agree????
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-11-30 01:11
你太可爱了,请你把参数的位置放对好不好,[a,r]=lsqnonlin(f,x,y,ab)追问
追答然后??你想表达啥???像你那样放置会报错的,不信你可以试试。追问ab就是 待求参数a与b的初始值,那help中的x0不是待求参数的初始值吗,xy是往函数里传递的变量,不是上下边界追答。。。。你的函数里的a在哪??追问a(1),a(2)就是待求的参数,y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52))追答那你的x,y矩阵里的值难道不是初始值吗??追问
x y 对应的数据关系就是提问中一堆一一对应的 数据。
我就是想用lsqnonlin函数进行回归,求解ab,但是老是出现矩阵维数不一致问题。有的例题就可以解。有的不行。
追答你这题有问题吧,两个方程两个未知数,x,y只要两组数据就能求a b 了。追问这个问题领域属于拟合参数,不是解方程。
General model:
f(x) = b*(1.1*sqrt(x)+a)/(0.5*x+52)
Coefficients (with 95% confidence bounds):
a = -0.2423 (-0.3988, -0.08585)
b = 92.99 (75.48, 110.5)
Goodness of fit: R-square: 0.9482
这个是用Matlab 的cftool命令做的。是交互式.
我想知道用程序哪里出错,怎么解决?????? !!!!
有人用1stopt软件也算了,结果相同追答不好意思哈,刚刚出去了下。你可以这样,代码我写好了,你试试
function Q=myfun(a,x,y)
x =[
1.1200
1.2400
1.3000
1.1700
1.1600
0.9760
0.8090
0.8100
0.4440
0.4290];
y =[
1.5900
1.6300
1.8600
1.7700
1.7300
1.4500
1.3600
1.2000
0.9520
0.8280];
Y=(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52));
Q=Y-y;
主程序里:
clear;clc;
x =[
1.1200
1.2400
1.3000
1.1700
1.1600
0.9760
0.8090
0.8100
0.4440
0.4290];
y =[
1.5900
1.6300
1.8600
1.7700
1.7300
1.4500
1.3600
1.2000
0.9520
0.8280];
ab=[1 2];
[a,r]=lsqnonlin(@myfun,ab,x,y)
就这样。结果是:
a =
1.5900 1.6300
r =
19.4266
满意请采纳。
追答然后??你想表达啥???像你那样放置会报错的,不信你可以试试。追问ab就是 待求参数a与b的初始值,那help中的x0不是待求参数的初始值吗,xy是往函数里传递的变量,不是上下边界追答。。。。你的函数里的a在哪??追问a(1),a(2)就是待求的参数,y-(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52))追答那你的x,y矩阵里的值难道不是初始值吗??追问
x y 对应的数据关系就是提问中一堆一一对应的 数据。
我就是想用lsqnonlin函数进行回归,求解ab,但是老是出现矩阵维数不一致问题。有的例题就可以解。有的不行。
追答你这题有问题吧,两个方程两个未知数,x,y只要两组数据就能求a b 了。追问这个问题领域属于拟合参数,不是解方程。
General model:
f(x) = b*(1.1*sqrt(x)+a)/(0.5*x+52)
Coefficients (with 95% confidence bounds):
a = -0.2423 (-0.3988, -0.08585)
b = 92.99 (75.48, 110.5)
Goodness of fit: R-square: 0.9482
这个是用Matlab 的cftool命令做的。是交互式.
我想知道用程序哪里出错,怎么解决?????? !!!!
有人用1stopt软件也算了,结果相同追答不好意思哈,刚刚出去了下。你可以这样,代码我写好了,你试试
function Q=myfun(a,x,y)
x =[
1.1200
1.2400
1.3000
1.1700
1.1600
0.9760
0.8090
0.8100
0.4440
0.4290];
y =[
1.5900
1.6300
1.8600
1.7700
1.7300
1.4500
1.3600
1.2000
0.9520
0.8280];
Y=(a(2)*(1.1*sqrt(x)+a(1))./(0.5*x+52));
Q=Y-y;
主程序里:
clear;clc;
x =[
1.1200
1.2400
1.3000
1.1700
1.1600
0.9760
0.8090
0.8100
0.4440
0.4290];
y =[
1.5900
1.6300
1.8600
1.7700
1.7300
1.4500
1.3600
1.2000
0.9520
0.8280];
ab=[1 2];
[a,r]=lsqnonlin(@myfun,ab,x,y)
就这样。结果是:
a =
1.5900 1.6300
r =
19.4266
满意请采纳。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯