早教吧作业答案频道 -->其他-->
编写MATLAB s-function状态方程中的未知数怎么给进去的问题?状态方程如下:X'=A*X+B*Uy=C*x+D*U;用的是连续状态,编写s函数时因为矩阵A中有未知数w,具体的程序如下:function [sys,x0,str,ts,simStateCompliance
题目详情
编写MATLAB s-function状态方程中的未知数怎么给进去的问题?状态方程如下:
X'=A*X+B*U
y=C*x+D*U;用的是连续状态,编写s函数时因为矩阵A中有未知数w,具体的程序如下:
function [sys,x0,str,ts,simStateCompliance] = quanjie(t,x,u,flag)
Rs=1.405;
Ls=0.178039;
Rr=1.395;
Lr=0.178039;
Lm=0.1722;
Rsr=Rs+(Lm/Lr)^2*Rr;
Ls1=Ls-Lm^2/Lr;
Tsr=Ls1/Rsr;
Tr=Lr/Rr;
switch flag,
case 0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys = [];
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 4;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 4;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [0 0 0 0]';
str = [];
ts = [0 0];
simStateCompliance = 'UnknownSimState';
function sys=mdlDerivatives(t,x,u)
A=[-1/Tsr 0 Lm/(Ls1*Lr*Tr) Lm*wr/(Ls1*Lr)
0 -1/Tsr -Lm*wr/(Ls1*Lr) Lm/(Ls1*Lr*Tr)
Lm/Tr 0 -1/Tr -wr;
0 Lm/Tr wr -1/Tr ];
B=[1/Ls1 1/Ls1 0 0]';
sys = A*x+B*u;
function sys=mdlOutputs(t,x,u)
C=[1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0];
sys = C*x;
wr是要通过观测器出来的4个量计算的,怎么把wr值给入到矩阵中进行运算啊?我理解的s函数输入参数外,其他输入为状态变量的输入.请高人指教,感激!
X'=A*X+B*U
y=C*x+D*U;用的是连续状态,编写s函数时因为矩阵A中有未知数w,具体的程序如下:
function [sys,x0,str,ts,simStateCompliance] = quanjie(t,x,u,flag)
Rs=1.405;
Ls=0.178039;
Rr=1.395;
Lr=0.178039;
Lm=0.1722;
Rsr=Rs+(Lm/Lr)^2*Rr;
Ls1=Ls-Lm^2/Lr;
Tsr=Ls1/Rsr;
Tr=Lr/Rr;
switch flag,
case 0,
[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys = [];
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));
end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 4;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 4;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [0 0 0 0]';
str = [];
ts = [0 0];
simStateCompliance = 'UnknownSimState';
function sys=mdlDerivatives(t,x,u)
A=[-1/Tsr 0 Lm/(Ls1*Lr*Tr) Lm*wr/(Ls1*Lr)
0 -1/Tsr -Lm*wr/(Ls1*Lr) Lm/(Ls1*Lr*Tr)
Lm/Tr 0 -1/Tr -wr;
0 Lm/Tr wr -1/Tr ];
B=[1/Ls1 1/Ls1 0 0]';
sys = A*x+B*u;
function sys=mdlOutputs(t,x,u)
C=[1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0];
sys = C*x;
wr是要通过观测器出来的4个量计算的,怎么把wr值给入到矩阵中进行运算啊?我理解的s函数输入参数外,其他输入为状态变量的输入.请高人指教,感激!
▼优质解答
答案和解析
你的问题可以化为下面向量的问题
已知a=(1,1,1),b=(-1,1,1),c=a×u,d=c×u,
c和d的夹角是50°,c和v的夹角是55°,d和v的夹角是4.9°,
u⊥v,|u|=1,|v|=1
求u,v
题中的a,b,c,d,u,v均为三维向量,×表示向量内积,|u|表示向量u的模
其中,向量b对应你以前的(m,n,p),向量u对应你以前的(h,k,l),向量v对应你以前的(u,v,w)
由上题,c=a×u,d=c×u可得c⊥u,d⊥u又u⊥v,且c,d,v有相同的起点即坐标原点,从而c,d,v在同一平面上且有相同的起点,且均与u垂直
所以c,d,v之间的夹角必定满足某个等式,回到题上也就是说,55°=50°+5°,
进一步说,你给的条件是矛盾的,所以matlab找不到解
就算你给出的条件是对的,由于你给出的前三个方程并非完全独立的,也不足以确定你想要的结果
已知a=(1,1,1),b=(-1,1,1),c=a×u,d=c×u,
c和d的夹角是50°,c和v的夹角是55°,d和v的夹角是4.9°,
u⊥v,|u|=1,|v|=1
求u,v
题中的a,b,c,d,u,v均为三维向量,×表示向量内积,|u|表示向量u的模
其中,向量b对应你以前的(m,n,p),向量u对应你以前的(h,k,l),向量v对应你以前的(u,v,w)
由上题,c=a×u,d=c×u可得c⊥u,d⊥u又u⊥v,且c,d,v有相同的起点即坐标原点,从而c,d,v在同一平面上且有相同的起点,且均与u垂直
所以c,d,v之间的夹角必定满足某个等式,回到题上也就是说,55°=50°+5°,
进一步说,你给的条件是矛盾的,所以matlab找不到解
就算你给出的条件是对的,由于你给出的前三个方程并非完全独立的,也不足以确定你想要的结果
看了 编写MATLAB s-fun...的网友还看了以下:
在进行中断处理时,要进行如下过程:Ⅰ恢复被中断程序现场,继续执行被中断程序Ⅱ分析中断源,确定中断 2020-05-23 …
● 实施合同中承包方必须按批准的进度计划组织开发,接受监理工程师对进度的检查和监督。如果工程实 2020-05-26 …
实施合同中承包方必须按批准的进度计划组织开发,接受监理工程师对进度的检查和监督。如果工程实际 2020-05-26 …
如图为血糖的来源和去路示意图,请填写下列内容:(1)图中①过程是,⑤过程进行的主要场所是.⑥代表的 2020-06-10 …
如图为人体内血糖的来源和去向示意图,受多种激素调节,从而维持血糖平衡.请据图回答:(1)①过程中小 2020-06-10 …
一队正在行进的队伍长120米,通讯员从队尾赶到排头再返回队尾,这时队伍前进了288米,求通讯员共走 2020-06-17 …
如图所示为人体内生理过程的图解,下列叙述正确的是A.肠道中的物质A通过协助扩散进入小肠上皮细胞内B 2020-07-29 …
按如图的程序进行操作,规定:程序运行从“输入一个值x”到“结果是否>487?”为一次操作.如果操作进 2020-11-06 …
按如图的程序进行操作,规定:程序运行从“输入x”到“判断结果是否≥365”为一次操作.如果操作进行2 2020-12-09 …
(2012•滨湖区模拟)按如图的程序进行操作,规定:程序运行从“输入一个值x”到“结果是否≥365” 2020-12-09 …