㈠ simulink 如何在是function中加入程序(程序是M文件)
1.matlab在work根目录下新建一个m文件,然后在滑侍散m文件里面写入s-function程序。
2.更改该m文件的名称,设置成你信氏所需的,比如test.m
3.在simulink编辑环境下,拖入S-function模块,谈液双击该模块,在s-function
Name一栏填入test
4.点击后面的按钮Edit,如果能进入test.m,表明s-function模块与程序正确的链接上了。
㈡ 如何新建sfunction文件
S函数是对一个动态系统的计算机程序语言描述.S函数可以使用MATLAB或者C怨言写成.用C语言写成毁岁的S函数要用Mex工具编译成Mex文件.与其他的Mex文件一样,他们在需要的时候动态地链接到MATLAB:
S函数使用纤链睁一种特殊的调用语法,通过它可以与ODE求解器进行交互.这种交互同求解器与Simulink内建模之间的交互非常相似.
S函数的形式非常全面,它包括连续、离散和混合系统,因此,几乎所有的Simulink模型都可以描述为S函数.通过User-DefinedFunctions库中的S-Function模块,可以将S函数加进Simulink模型,使用S-Function模块对话框可以制定S函数的名字,模块可以是一个CMex文件或者M文件,如果存在具有相同名字的CMex文件和M文件,S函数有限使用CMex文.
可以使用Simulink的模块工具为S-Function模块创建一个定制的对话框和图标.模块对话框使得为S函数制定附加的参数变得更容易一些.
S函数的作用与原理
S函数最通常的用法是创建一个定制的Simulink模块,可以在许多应用程序中使用S函数,包括
(1)Simulinkl中加进新的通用模块;
(2)将已存在的C代码融合并入一个仿真中;
(3)将一个系统描述为一系列的数学方程
(4)使用图形动画.
使用S函数的一个有点是可以创建一个通用的模块,在模型中可以多次使用它,使用时只需要改变它的参数值即可.
Simulink模型中的每一个模块都有如下的共同特征:一个输入向量U,一个输入向量Y,以及一个状态向量X.
状态向量可能包括连续状态、离散状态或连续状态的组合.
Simulink将状态向量分为两部分:连续状态和离散状态.连续状态占据着向量的第一部分,离散状唤洞态占据第二部分.对于没有状态的模块,x是一个控的向量.
㈢ 如何在matlab中创建m文件
MATLAB的m文件分为两种,
1、脚本文件,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是name.m 就在命令窗口里输入name回车就行;
2、函数文件,第一行为function ,比如说是function y = name(x)这种文件,函数名与文件名是一致的,在命令窗口里输入name(x),x是运行参数,回车即运行。
其中以function开头的一行为引导行,表示该M文件是一个函数。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出型参数。当输出从形参多于一个时,则应该用方括号括起来。
function [s,p]=fcircle(r)
%
% r-圆半径
% s-圆面积
% p-圆周长
s=pi*r*r;
p=2*pi*r;
调用的方式调用方式: 在命令窗口输入 fcircle(5)即可。
实例:
1、创建M文件:新建函数
2、编写m文件
function s=sumsum(n)
s=0;
for i=1:n
s=s+i;
end
注意这里的保存路径
3、添加保存路径到目录下:在命令窗口输入如图所示:
cd紧跟为刚才m文件保存路径
4、直接调用sumsum函数即可
㈣ MATLAB文件m怎么建立啊
㈤ matlab 如何创建并调用m文件
如果M文件是函数形式,例如:
%示例
function [A,B]=fx(x,y,z)
%
那么需要在主窗口中输入函数调用命令,拿上面实例代码为例,需要在主窗口中输入:[A1,B1]=fx(x1,y1,z1),其中x1,y1,z1是你要传递的参数
如果m文件不是函数形式,只是一系列运算过程代码,那么直接点击运行即可,运行方法有很多,最简单的是如下:
点击红框区域内的绿色按钮直接便可以运行M文件。
㈥ 如何在matlab中创建m文件
matlab中有很多函数并不是直接输入在命令窗口,而是放在m文件中,便于多次使用,那么怎么创建和调用m文件呢?
开启分步阅读模式
工具材料:
matlab
操作方法
01
1.打开matlab,点击工具栏中的文件,然后点击新建,会出现m文件,点击它就会创建一个m文件
02
文件创建后,会出现如图所示的一个界面,这就是m文件的界面,它类似于一个txt文档,在里面编写函数
03
编写函数必须有一个function,function后面跟随的是函数名,function不能缺少,图片中命名函数名为summ,它的作用是求从1累加到100的和
04
当函数编写完成后保存文件,例如将它保存在桌面,那么matlab的工作空间也需要是桌面,这样他才能查找到m文件,点击工作空间右边的按钮,选择桌面,文件名默认为函数名,建议使用默认文件名,不建议修改文件名,
05
完成上述步骤后,在matlab的命令窗口输入m文件的文件名,图片中输入m文件名summ,点击回车,软件将读取m文件,并将运行m文件,实现函数作用
06
m文件有很多的好处,它可以实现同一个函数的多次调用,当一次使用后,下一次又需要用这个函数,仍然可以调用
特别提示
注意工作空间应该和m文件位置同样
有时候我们在使用MATLAB的时候,想创建和运行m文件,怎么操作呢,下面来分享一下方法
开启分步阅读模式
工具材料:
电脑
MATLAB
操作方法
01
第一步在我们的电脑上打开软件,创建一个工作路径文件夹,设置工作路径可以搜狗搜索一下,我们把创建的脚本,函数都放在里面,如下图所示:
02
第二步右键工作路径文件夹,选择“新建文件->脚本”,如下图所示:
03
第三步可以看到成功创建一个m文件,我们可以对这个m文件进行重命名,如下图所示:
04
第四步创建m脚本文件之后,我们可以在里面输入以下代码,绘制正余弦曲线,如下图所示:
05
第五步代码写完之后,按ctrl+s键进行保存,点击编辑器中的运行,如下图所示:
06
第六步可以看到成功运行m文件,绘制出了正余弦曲线,如下图所示:
㈦ matlab中如何用M文件编写的程序生成simulink的模块详细点,谢谢!
生成simulink中圆碰指的模块是要利吵枯用s-function建立
在里面simulink--s-fuction
demos--m-file
templete,
具体也说不清楚,我参考书为《matlab仿真在通信与电橘配子工程能够中的应用》p45--p50
㈧ s-fuction 是什么
SIMULINK s-function的设计
Simulink为用户提供了许多内置的基本库模块,通过这些模块进行连接而构成系统的模型。对于那些经常使用的模块进行组合并封装可以构建出重复使用的新模块,但它依然是基于Simulink原来提供的内置模块。
而Simulink s-function是一种强大的对模块库进行扩展的新工具。一、s-function的概念
s-function是一个动态系统的计算机语言描述,在MATLAB里,用户可以选择用m文件编写,也可以用c或mex文件编写,在这里只给大家介绍如何用m文件编写s-function。
S-function提供了扩展Simulink模块库的有力工具,它采用一种特定的调用语法,使函数和Simulink解法器进行交互。
S-function最广泛的用途是定制用户自己的Simulink模块。它的形式十分通用,能够支持纤友袜连续系统、离散告谈系统和混合系统。
二、建立m文件s-function
1、使用模板文件:sfuntmp1. m
该模板文件位于MATLAB根目录下toolbox/simulink/blocks目录下。
模板文件里s-function的结构十分简单,它只为不同的flag的值指定要相应调用的m文件子函数。比如当flag=3时,即模块处于计算输出这个仿真阶段时,相应调用的子函数为sys=mdloutputs(t,x,u)。
模板文件使用switch语句来完成这种毁激指定,当然这种结构并不唯一,用户也可以使用if语句来完成同样的功能。而且在实际运用时,可以根据实际需要来去掉某些值,因为并不是每个模块都需要经过所有的子函数调用。
模板文件只是Simulink为方便用户而提供的一种参考格式,并不是编写s-function的语法要求,用户完全可以改变子函数的名称,或者直接把代码写在主函数里,但使用模板文件的好处是,比较方便,而且条理清晰。
使用模板编写s-function,用户只需把s-函数名换成期望的函数名称,如果需要额外的输入参量,还需在输入参数列表的后面增加这些参数,因为前面的4个参数是simulink调用s-function时自动传入的。对于输出参数,最好不做修改。接下去的工作就是根据所编s-function要完成的任务,用相应的代码去替代模板里各个子函数的代码即可。
Simulink在每个仿真阶段都会对s-function进行调用,在调用时,Simulink会根据所处的仿真阶段为flag传入不同的值,而且还会为sys这个返回参数指定不同的角色,也就是说尽管是相同的sys变量,但在不同的仿真阶段其意义却不相同,这种变化由simulink自动完成。
m文件s-function可用的子函数说明如下:
mdlInitializeSizes:定义s-function模块的基本特性,包括采样时间、连续或者离散状态的初始条件和sizes数组。
mdlDerivatives:计算连续状态变量的微分方程。
mdlUpdate:更新离散状态、采样时间和主时间步的要求。
mdlOutputs:计算s-function的输出。mdlGetTimeOfNextVarHit:计算下一个采样点的绝对时间,这个方法仅仅是在用户在mdlInitializeSizes 里说明了一个可变的离散采样时间。
mdlTerminate:实现仿真任务必须的结束。
概括说来,建立s-function可以分成两个分离的任务:
初始化模块特性包括输入输出信号的宽度,离散连续状态的初始条件和采样时间。
将算法放到合适的s-function子函数中去。
2、定义s-function的初始信息
为了让Simulink识别出一个m文件s-function,用户必须在s-函数里提供有关s-函数的说明信息,包括采样时间、连续或者离散状态个数等初始条件。这一部分主要是在mdlInitializeSizes子函数里完成。
Sizes数组是s-function函数信息的载体,它内部的字段意义为:
NumContStates:连续状态的个数(状态向量连续部分的宽度)
NumDiscStates:离散状态的个数(状态向量离散部分的宽度)
NumOutputs: 输出变量的个数(输出向量的宽度)
NumInputs:输入变量的个数(输入向量的宽度)
DirFeedthrough:有无直接馈入
NumSampleTimes:采样时间的个数
如果字段代表的向量宽度为动态可变,则可以将它们赋值为-1。
注意DirFeedthrough是一个布尔变量,它的取值只有0和1两种,0表示没有直接馈入,此时用户在编写mdlOutputs子函数时就要确保子函数的代码里不出现输入变量u;1表示有直接馈入。
NumSampleTimes表示采样时间的个数,也就是ts变量的行数,与用户对ts的定义有关。
需要指出的是,由于s-function会忽略端口,所以当有多个输入变量或多个输出变量时,必须用mux模块或demux模块将多个单一输入合成一个复合输入向量或将一个复合输出向量分解为多个单一输出。
3、输入和输出参量说明
S-function默认的4个输入参数为t、x、u和flag,它们的次序不能变动,代表的意义分别为:
t:代表当前的仿真时间,这个输入参数通常用于决定下一个采样时刻,或者在多采样速率系统中,用来区分不同的采样时刻点,并据此进行不同的处理。
x: 表示状态向量,这个参数是必须的,甚至在系统中不存在状态时也是如此。它具有很灵活的运用。
u:表示输入向量。
flag:是一个控制在每一个仿真阶段调用哪一个子函数的参数,由Simulink在调用时自动取值。
S-function默认的4个返回参数为sys、x0、str和ts,它们的次序不能变动,代表的意义分别为:
sys:是一个通用的返回参数,它所返回值的意义取决于flag的值。
x0: 是初始的状态值(没有状态时是一个空矩阵[]),这个返回参数只在flag值为0时才有效,其他时候都会被忽略。
str:这个参数没有什么意义,是MathWorks公司为将来的应用保留的,m文件s-function必须把它设为空矩阵。
ts:是一个m×2的矩阵,它的两列分别表示采样时间间隔和偏移。
例1 csfunc.m(连续状态s-function)
例2 dsfunc.m(离散状态s-function)
例3 mixedm.m(混合系统s-function)
例4 vsfunc.m(可变步长仿真系统)
例5 filt.m,rect.m,rload.m(非模板文件形式)
㈨ Matlab怎么建立函数文件funx.m
如果是 自定义 的 函数 的话,可以用file-new-function来建立。里面有建立函数的模版,然后保存后就是.m文件了。 如果只是要建立可以 顺序 执行的 程序 的.m文件,只需要在command window里输入edit,再保存即可。 不知道有没有解答你的疑问,m文件函数是Matlab中的子函数,其格式为: function[输出参数列表]=函数名(输入参数列表) 函数体 举个例子,编写一个求自变量X的正弦值的m函数,
㈩ matlab中如何用s function建立一个模块,有输入和输出,中间用s函数编写好的程序计算。
如果有已经写抄好的袭s-function的m文件,那么可以放置在仿真文件的一个文件夹下。(在仿真前,把matlab的当前工作文件夹切换到这个文件夹下。)
在仿真文件中,打开s-function模块,在name那个输入框里面填写m文件的名字,点击edit,如果可以进入m文件,证明两者之间关联好了。