MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 121|回复: 4|关注: 0

[已解决] lsqcurvefit函数系数为m*n向量,myfun函数怎么编

[复制链接]

新手

7 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
我在论坛里看到lsqcurvefit函数的例子中很多都是输入数据是1*N向量,我在用lsqcurvefi 辨识满足x‘A=b的x的值时, x为m*1向量 ,A为m*n向量,b为1*n向量,[a,resnorm] = lsqcurvefit(@myfun,a0,xdata,ydata)那个myfun函数到底要怎么编。我困在这里很久了,求各位大神指教一下


论坛优秀回答者

中级

535 麦片

财富积分


5001500


1

主题

727

帖子

115

最佳答案
  • 关注者: 15
发表于 6 天前 | 显示全部楼层 |此回复为最佳答案
本帖最后由 maple1314168 于 2017-10-12 10:25 编辑

困难在于,一般的拟合,使用的单个xdata,并不是两个一组、三个一组。。。,所以造成这个影响。
你现在 求解的是x吧? x,先不理转置。假设x‘为x,求出来再转置就是。
x就是 1*m,A为 m*n  b为1*n              一般m<n,否则是不定方程。有多个解符合等式。
假设    m=3,n=4
A=rand(3,4);xdata=A;b=ones(1,4);ydata=b;
myfun=@(x,xdata)x*xdata;
x = lsqcurvefit(@(x,xdata) myfun(x,xdata),[1 1 1],xdata,ydata)
           
         

新手

7 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
 楼主| 发表于 6 天前 | 显示全部楼层
maple1314168 发表于 2017-10-12 09:59
困难在于,一般的拟合,使用的单个xdata,并不是两个一组、三个一组。。。,所以造成这个影响。
你现在 求解 ...

非常感谢,按你的方法是可以用的,但这个为什么能用,能解释一下吗
BJU@}T`{NTAD~B31C50(24V.png

论坛优秀回答者

中级

535 麦片

财富积分


5001500


1

主题

727

帖子

115

最佳答案
  • 关注者: 15
发表于 6 天前 | 显示全部楼层
本帖最后由 maple1314168 于 2017-10-13 09:05 编辑
藤原豆腐店 发表于 2017-10-12 18:25
非常感谢,按你的方法是可以用的,但这个为什么能用,能解释一下吗

看看 命令的帮助文件!
很多人只用1列数据,并没有说明人家不能用矩阵。
xdata — Input data for mode   real vector | real array     [size=11.8056px]
Input data for model, specified as a real vector or real array. The model is
ydata = fun(x,xdata),
where xdata and ydata are fixed arrays, and x is the array of parameters that lsqcurvefit changes to search for a minimum sum of squares.
Example: xdata = [1,2,3,4]

real array   可以包括一维、二维矩阵

你这个属于 线性 的  可以用 lsqlin


新手

7 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
 楼主| 发表于 5 天前 | 显示全部楼层
maple1314168 发表于 2017-10-12 19:48
看看 命令的帮助文件!
很多人只用1列数据,并没有说明人家不能用矩阵。
xdata — Input data for mode    ...

好的,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表