网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月29日漏签0天
matlab吧 关注:291,632贴子:1,657,842
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1回复贴,共1页
<<返回matlab吧
>0< 加载中...

使用lsqnonlin进行状态空间拟合 求解A B阵

  • 只看楼主
  • 收藏

  • 回复
  • MYMSKKS
  • 抢个沙发
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
请大神指教 现在用lsqnonlin进行拟合 拟合的对象是一个状态空间方程 如下所示 目标是求解A B阵
x'=[a1 a2;a3 a4]x+[a5;a6]*Wf
y=[1 0;0 1]x
其中x=[n1;n2];u=Wf;y=[n1;n2]
程序如下:
首先是调用函数:SVMnihefa.m
%状态变量拟合法调用函数
function E=SVMnihefa(a,t,n1,n2,Wf)
a1=a(1);
a2=a(2);
a3=a(3);
a4=a(4);
a5=a(5);
a6=a(6);
t=t(:);
n1=n1(:);
n2=n2(:);
Y1=Y1(:);
Y2=Y2(:);
diff('Y1','t')=a1*Y1+a2*n2+a5*Wf;
diff('Y2','t')=a3*n1+a4*Y2+a6*Wf;
Y=[Y1;Y2];
E=y-Y;
然后是主函数:SVMnihefamain.m
%状态变量拟合法主函数
t=[0.1 0.3 0.5 0.7 0.9 1.1 1.4 1.7 2 3];
n1=[2.6 7.3 10.9 13.5 15.3 16.6 18 18.9 19.5 20.3];
n2=[3.7 8.3 10.7 12.2 13.1 13.7 14.3 14.6 14.8 15.1];
Wf=0.0332;
a0=[1 1 1 1 1 1];
[x,fval,norm,ef,res,output]=lsqnonlin(@SVMnihefa,a0,[],[],[],t,n1,n2,Wf)
现在运行主函数,报错如下:
Undefined function or variable 'Y1'.
Error in SVMnihefa (line 12)
Y1=Y1(:);
Error in lsqnonlin (line 194)
initVals.F = feval(funfcn{3},xCurrent,varargin{:});
Error in SVMnihefaMain (line 7)
[x,fval,norm,ef,res,output]=lsqnonlin(@SVMnihefa,a0,[],[],[],t,n1,n2,Wf)
Caused by:
Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue.
我觉得主要问题就是我在调用函数SVMnihefa.m里写的那两个方程有问题,即
diff('Y1','t')=a1*Y1+a2*n2+a5*Wf;
diff('Y2','t')=a3*n1+a4*Y2+a6*Wf;
实在是不清楚这两句应该怎么写。
请问大神应该怎么改?搞了两天了 总是报错 不知道问题在哪里 请大神指教 感激不尽!


  • chendequan610
  • 笑而不语
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
可有文字版详细资料?QQ516477448


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回matlab吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示