Matlab S函数编写 状态方程编写??? Undefined function or variable "dx1".

作者&投稿:僪砖 (若有异议请与网页底部的电邮联系)
MATLAB中运行m函数文件显示Undefined function or variable 'x'.~

matlab 运行m文件出现Undefined function or variable原因是没有定义好变量。

  MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
  MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

这个错误是未对x定义造成的。错误原因及修改方法如下
没有给变量x赋值。在函数调用x前要给x赋值,例如x = 5;
x已经赋值,但由于是在一个函数中赋值,但是在另一个函数中调用。此时用global在两个函数中分别声明x为全局变量。可以解决。

dx1=q/v1*(cf-x(1))-k0*x(1)*exp(-ER/x(2));
dx2=q/v1*(Tf-x(2))+((-H)*k0*x(1)/(p*cp))*exp(-ER/x(2))+((pc*cpc)/(p*cp*v1))*u*(1-exp(-UA1/(u*pc*cpc)))*(Tcf-x(2));
dx3=q/v2*(x(1)-x(3))-k0*x(3)*exp(-ER/x(4));
dx4=q/v2*(x(2)-x(4))+(-H)*k0*x(3)/(p*cp)*exp(-ER/x(4))+((pc*cpc)/(p*cp*v2))*u*(1-exp(-UA2/(u*pc*cpc)))*(x(2)-x(4)+exp(-UA1/(u*pc*cpc))*(Tcf-x(2)));

sys = [dx1;dx2;dx3;dx4];

我觉得你的错误比较低级。

初始化时没有定义dx1-dx4。


上甘岭区15638055310: 用matlab语言求下列系统的状态方程、传递函数、零极点增益、和部分分式形式的模型参数和状态方程 -
莫响坤泰: (1)状态方程模型参数:编写matlab程序如下>> num=[1 7 24 24]; >> den=[1 10 35 50 24]; >> [A B C D]=tf2ss(num,den)得到结果:A=,B=,C=,D=[0] 所以模型为: =X+u,y=X(2) 零极点增益:编写程序 >> num=[1 7 24 24]; >> den=[1 10 35 50 24]; ...

上甘岭区15638055310: MATLAB S函数中的mdlDerivatives是怎么应用的?讲的越详细越好. -
莫响坤泰: 这个是典型的s-function计算状态方程.首先定义了ABCD的值,mdlInitializeSizes里面写入初始值,mdlDerivatives下面写入微分方程,mdlOutputs里面写入...

上甘岭区15638055310: 如何用matlab编程使用ts算法实现tsd问题 -
莫响坤泰: 在matlab的workspace里打editsfuntmpl(这是matlab自己提供的s函数模板),我们看它来具体分析s函数的结构.它的第一行是这样的:function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)先讲输入与输出变量的含义:t是采样时间,x是状态变量,u是输入...

上甘岭区15638055310: matlab中s函数怎么写 -
莫响坤泰: 所谓s函数是system Function的简称,用s函数可以利用matlab的丰富资源,而不仅仅局限于simulink提供的模块,而用c或c++等语言写的s函数还可以实现对硬件端口的操作, 还可以操作windows API等.先介绍一下simulink的仿真过程(以便理解s函数),simulink的仿真有两个阶段: 一个为初始化,这个阶段主要是设置一些参数,像系统的输入输出个数、状态初值、 采样时间等;第二个阶段就是运行阶段,这个阶段里要进行计算输出、更新离散状态、 计算连续状态等等,这个阶段需要反复运行,直至结束.可以使用模板文件:sfuntmp1.m来写s函数

上甘岭区15638055310: simulink中的s函数 -
莫响坤泰: S-函数是系统函数(System Function)的简称,是指采用非图形化的方式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块.用户可以采用MATLAB代码,C,C++,FORTRAM或Ada等语言编写S-函数.S-函数由一种特定的语法构...

上甘岭区15638055310: 编写MATLAB s - function状态方程中的未知数怎么给进去的问题?状态方程如下:
莫响坤泰: 你的问题可以化为下面向量的问题 已知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对应你以前的(...

上甘岭区15638055310: 用MATLAB实现,系统的传函G(s)=s^3+4s^2+5/s^4+2s^2+7S^2+s+1,将其转化为状态方程和零极点模型.在线等 -
莫响坤泰: clc clear num=[1 4 0 5]; den=[1 2 7 1 1]; [A,B,C,D]=tf2ss(num,den); sys=ss(A,B,C,D) zpm=zpk(sys)doc下tf,ss,zpk,tf2ss,ss2tf等

上甘岭区15638055310: 怎么用MATLAB S函数实现下面的差分方程组? X1(k)=0.5*|X2(k - 1)|/t1(k - 1) X2(k)= - 0.5*X1(k)/t2(k) -
莫响坤泰: 仔细看看吧!由于在matlab中x(k)k的值不能从0开始!所以就写了下面的m文件;看看吧!function mufun()% X1(k)=0.5*X2(k-1)/t1(k-1)% X2(k)=-0.5*X1(k)/t2(k) n=5; X2(1)=1; t1=[1 2 3 4]; t2=[1 2 3 4 5];%t2(1)用不到 for k=2:n X1(k)=0.5*X2(k-1)/t1(k-1); X2(k)=-0.5*X1(k)/t2(k); end X1,X2 望采纳!

上甘岭区15638055310: 如何用matlab编写e指数方程? -
莫响坤泰: 1.用function函数做.确定V和I的数. 2.用图形表示出来.

上甘岭区15638055310: matlab s fuction的建立 -
莫响坤泰: S-Function 可以使用MATLAB®,C,C++,Ada,或Fortran 语言来编写.如果用matlab编写,它和一般的m-function是一样的. 请参考一个文档: http://wenku.baidu.com/view/f123551b6bd97f192279e92f.html

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网