simulink命令集(转载)
仿真命令:
sim ---仿真运行一个simulink模块
sldebug ---调试一个simulink模块
simset ---设置仿真参数
simget ---获取仿真参数
线性化和整理命令:
linmod ---从连续时间系统中获取线性模型(状态方程)
linmod2 ---也是获取线性模型,采用高级方法
dinmod ---从离散时间系统中获取线性模型
trim ---为一个仿真系统寻找稳定的状态参数
构建模型命令:
open_system --打开已有的模型
close_system --关闭打开的模型或模块
new_system --创建一个新的空模型窗口
load_system --加载已有的模型并使模型不可见
save_system --保存一个打开的模型
add_block --添加一个新的模块
add_line --添加一条线(两个模块之间的连线)
delete_block --删除一个模块
delete_line --删除一根线
find_system --查找一个模块
hilite_system --使一个模块醒目显示
replace_block --用一个新模块代替已有的模块
set_param --为模型或模块设置参数
get_param --获取模块或模型的参数
add_param --为一个模型添加用户自定义的字符串参数
delete_param --从一个模型中删除一个用户自定义的参数
bdclose --关闭一个simulink窗口
bdroot --根层次下的模块名字
gcb --获取当前模块的名字
gcbh --获取当前模块的句柄
gcs --获取当前系统的名字
getfullname --获取一个模块的完全路径名
slupdate --将1.x的模块升级为3.x的模块
addterms --为未连接的端口添加terminators模块
boolean --将数值数组转化为布尔值
slhelp --simulink的用户向导或者模块帮助
封装命令:
hasmask --检查已有模块是否封装
hasmaskdlg --检查已有模块是否有封装的对话框
hasmaskicon --检查已有模块是否有封装的图标
iconedit --使用ginput函数来设计模块图标
maskpopups --返回并改变封装模块的弹出菜单项
movemask --重建内置封装模块为封装的子模块
诊断命令:
sllastdiagnostic --上一次诊断信息
sllasterror --上一次错误信息
sllastwarning --上一次警告信息
sldiagnostics --为一个模型获取模块的数目和编译状态
硬拷贝和打印命令:
frameedit --编辑打印画面
print --将simulink系统打印成图片,或将图片保存为m文件
printopt --打印机默认设置
orient --设置纸张的方向
-----------------------------------------------------------------------------
附件包含好多simulink的例程,对于初学者和高手都需要的东西,大家多多支持
作者:mikle 发表时间:2008-8-18
12:15:00
第1楼
模块名 (Source library) 用途
Band_Limited White Noise 把白噪声加到连续系统中
Chip Signal 产生一个频率不断增大的正弦波
Clock 显示和提供仿真时间
Constant 产生一个常值
Digital Clock 在规定的采样间隔产生仿真时间
From File 从文件读取数据
From Workspace 从工作面上定义的矩阵中读数据
Pulse Generator 在固定的时间间隔产生脉冲
Random Number 产生正态分布的随机数
Repeating Sequence 产生规律重复的任意信号
Signal Generator 产生各种不同的波形
Sine Wave 产生一个正弦波
Step Input 产生一个阶跃函数
模块名 (Sinks library) 用途
Auto_Scale Graph Scope 在MATLAB自动调整显示比例的图形窗口显示信号
Graph Scope 在MATLAB图形窗口显示信号
Hit Crossing 在规定值附近增加仿真步数
Scope 在仿真过程中显示信号
Stop Simulation 当输入不为零时停止仿真
To File 把数据输出到文件中
To Workspace 把数据输出到工作面上定义的一个矩阵中
XY Graph Scope 在MATLAB图形窗口中显示信号的X—Y图
模块名 (Discrete library) 用途
Discrete-Time Integrator 对一个信号进行离散积分
Discrete-Time Limited Integrator 对一个信号进行离散有限积分
Discrete State-Space 建立一个离散状态空间模型
Discrete Transfer Fcn 建立一个离散传递函数
Discrete Zero-Pole 以零极点形式建立一个离散传递函数
Filter 建立IIR和FIR滤波器
First-Order Hold 建立一阶采样保持器
Unit Delay 对一个信号延迟一个采样周期
Zero-Order Hold 建立一个采样周期的零阶保持器
模块名 (Linear library) 用途
Derivative 对输入信号进行微分
Gain 对输入信号乘上一个常数增益
Inner Product 对输入信号进行点积
Integrator 对输入信号进行积分
Matrix Gain 对输入信号乘上一个矩阵增益
Slider Gain 以滑动形式改变增益
State-Space 建立一个线性状态空间模型
Sum 对输入信号进行求和
Transfer Fcn 建立一个线性传递函数
Zero-Pole 以零极点形式建立一个传递函数
模块名 (Nonlinear library) 用途
Abs 输出输入信号的绝对值
Backlash 用放映的方式模仿一个系统的特性
Combinatorial 建立一张真值表
Coulombic Friction 在原点不连续而在原点以外具有线性增益
Dead Zone 提供一个死区
Fcn 对输入进行规定的表示
Limited Integrator 在规定的范围内进行积分
Logical Operator 对输入进行规定的逻辑运算
Look-up Table 对输入进行分段的线性映射
MATLAB Fcn 定义一个函数对输入信号进行处理
Memory 输出本模块上一步的输入值
Product 对输入信号进行乘积运算
Quantizer 对输入信号进行量化处理
Rate Limiter 限制信号的变化速率
Relational Operator 对输入进行一定的关系运算
Relay 在两个值中轮流输出
Reset Integrator 在仿真中对积分器进行重新初始化
Saturation 对输入信号进行限幅
Sign 符号函数
Swith 在两个输入之间进行开关
Transport Delay 对输入信号进行一定的延迟
2-D Look-Up Table 对两个输入信号进行分段的线性映射
Variable Transport Delay 对输入信号进行不定量的延迟
模块名 (Connections library) 用途
Demux 把向量信号分开输出
Inport 给系统提供一个外部输出
Mux 把几个信号合并成向量形式
Outport 给系统规定一个输出
Subsystem 表示一个系统在另外一个系统中
作者:mikle 发表时间:2008-8-18
12:58:00
第2楼
simulink常见问题集锦:
命令行如何运行simulink外部模式build和start
用sim()函数
该函数的调用格式为:[t,x,y]=sim(f1,tspan,options,ut)
其中f1为SIMULINK的模型名,tspan为仿真时间控制变量;参数options为模型控制参数;ut为外部输入向量。
-------------------------------------------------------------------------
请问matlab中的仿真模块,可以看到起源程序吗?
那些基本模块是看不了源代码的,有很多模块是用subsystem组成的,你可以用look under mask(鼠标右键)看到里面是怎样用子模块搭接的,还有很多是由s函数写成的simulink的模块,这些直接edit sfunname(s函数的名字)就可以看到源代码
-------------------------------------------------------------------------
请问:在simulink参数中设置的步长是50e-6,在系统中有一个simout模块向MATLAB
中传递数据,但是希望以1e-3的步长获取数据,因该如何设计?在simout模块中直
接设定仿真步长是不能运行的。
需要插入一个"zero order hold"模块,将该模块的采样时间设置为1e-03就可以了
-------------------------------------------------------------------------
simulink中IGBT等电力元件都有个m极,是什么作用的?
用于测量流过IGBT电流及其电压
-------------------------------------------------------------------------
用simlink画的图,在示波器中显示,如何复制到word中
告诉你一个办法,在加上示波器的地方加上to workspace,改为array,在主窗口中plot,直接抓过去也行吧。
Edit下有copy model选项
-------------------------------------------------------------------------
simulink中的mask问题,请问如何封装,prompt,varible填啥,如何初始化
prompt中,填写变量的提示,如:直线斜率
variable中填写变量名.如:k
-------------------------------------------------------------------------
有关神经网络工具箱
为什么当训练和仿真时,命令窗口会出现一堆warning?如:
*WARNING* TRAINBPX is an obsolete function.
Use NNT2FF and TRAIN to update and train your network.
Type NNTWARN OFF to suppress NNT warning messages.
trainbpx,simuff这些命令应该怎么用?
你用的神经网络不太适合你的matlab版本,有点过时了,对于BP网络,像用newff训
练就没问题,建议你可买一本较新的神经网络参考书。还可看matlab的help
-------------------------------------------------------------------------
一个关于simulink仿真的问题
根据4个输出a1、a2、a3、a4判断,输出最大的ai所对应的数。这样一个过程不用s
函数能不能实现阿?我用了if else语句,但是无法把不同时刻的不同输出值汇总成
串行数据流输出。
用mux将各路信号构造成向量信号,再用matlab fcn下的max对之进行操作即可
-------------------------------------------------------------------------
怎么实现在simulink仿真过程中与其他程序进行通讯,即如何在simulink仿真过程
中实时读出数据。不论通过网络或变量空间中的变量都行,应该怎么实现,请教!
用to workspace或to file 都可以保存仿真时的数据
-------------------------------------------------------------------------
请问如何在simulink中实现A/D和D/A转换。
有相关的模块,在xpc中,不过得和硬件对应上
-------------------------------------------------------------------------
请问如何改变ode45函数中的步长
ode45现在的版本不允许显式给出步长
-------------------------------------------------------------------------
请教:如何将workspace中的输入,输出数据存为*.txt文件?
save filename varname -ASCII
varname是要存储的变量名,之间用空格分隔
-------------------------------------------------------------------------
将PID的SIMULINK图的输出仿真图形怎样与自己设计的界面中的按钮连接 回调函数怎么编
要显示的数据用Outport端子表示,就可以用sim函数直接获得数据了
-------------------------------------------------------------------------
怎样才能增加采样点?
在Simulink里边连接框图,阶跃step输入经过一积分环节1/s,用out输出至workspa
ce,tout跟yout都为56×1,能不能把56变成更大的值?怎么设置?谢谢!!!!!
能增加,simulink中你得到的是默认的结果,如果向增加,则可以认为减小允许的误差限,即在simulink中的relative error项,如将其变化成e-6或其他更小的值。另外还可以通过定步长方法进行仿真(这时应该注意要确认能保证仿真精度要求)
-------------------------------------------------------------------------
我最近在做电机控制的仿真时,遇到一个问题。我是用matlab6.5中的电机模块做为
模型,然后自己搭建了一个变频器。在运行中经常出现运行到一半时就进行不下去
了,simulink报错说步长有问题,我修改后还是不行。请问在做有关电机的仿真时
,应该如何设置仿真环境。
试试改变仿真算法,如ode15s
-------------------------------------------------------------------------
运行时出现下面的提示:
Derivative input 1 of block 'try1/check/Analog Filter Design' at time 0 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)
仿真系统数值不稳定,是模型的问题或是其他问题
-------------------------------------------------------------------------
相位Phase的单位deg是什么意思?
degree,it is same to say 度
-------------------------------------------------------------------------
workspace,数据多了就存不下啦?
采样时间设为0.01秒,运行若干秒以后,在workspace中打开scopedata(示波器form at设定为Array,limit data points to last没选择!)时,系统提示:cannot display variables with more then 10000 elements,什么原因?
数据量大了是不能显示得,实在不显示,可以考虑将矩阵存到文件中,你再去读文件了。
另外:你的矩阵维数是多少
connot display variables with more than 65536 elements!
a=ones(500,499);
双击workspace中的a矩阵
-------------------------------------------------------------------------
simulink中的数据为什么会丢失啊?我在做一个比较大的系统的rtw仿真
可是在仿真时,要是记录数据的模块(比如示波器,to workspace)等比较多或者步长比较小时,就会出现记录的数据不全或者干脆丢失的现象,比如to workspace的数据只有后面或者前面的几百个,丢了好多。记录不全。出现提示信息如下
Warning: Received shutdown message from target 15.002000 seconds ago.
Waitin
g for final data logging buffer and
logging terminator...
Warning: Received shutdown message from target 30.004000 seconds ago.
Waitin
g for final data logging buffer and logging terminator...
Warning: Received shutdown message from target 45.003000 seconds ago.
Waitin
g for final data logging buffer and logging terminator...
Warning: Received shutdown message from target 60.008000 seconds ago.
Waitin
g for final data logging buffer and logging terminator...
Warning: Did not received final data logging buffer and logging
terminator f
rom target. Disconnecting...
这样运行就停止了,但数据不全。另外,有时候运行时会出现突然黑屏现象。
还有就是在rtw中如何进行数据的实时观测,scope不可以了,在gui中编程可以实现吗?
看看原来的simulink模型
其中示波器或其他输出环节中可能选择了存最新若干数据的选项,解除它即可
-------------------------------------------------------------------------
请问白噪声譜生产随即数问题?
已知白噪声譜为S0,如何生产随即数序列?
遇到问题:
1,用simulink中的Band-Limited White Noise模块,设置 Noise Power为S0,可是为什么Sample time取不同的值,生成的生产随即数序列大小相差很大,有数量级的差别,不应该有那么大吧??
2,生产随机数的大小与Seed的取值有关吗?
3,有无更简单的方法。
你注意到1的现象很好
实际该模块发出的噪声是经过除以sqrt(T)后的结果,T是采样周期。所以你觉得幅值不同,这样可以保证噪声的强度符合有求。
-------------------------------------------------------------------------
请教:怎样能查到仿真块的程序?
simulink自带的模块如果不是mask的就查不了
-------------------------------------------------------------------------
为什么用SUMULINK里to file模块中的数据传不到M文件?需要设置什么?谢谢
是写入.mat中的。
用load命令读入到workspace。
-------------------------------------------------------------------------
请问如何产生带限白噪声
如果先产生随机数再通过滤波器,请问,滤波器归一化频率如何确定,和采样频率 归一化吗
使用Band-Limited White Noise模块
-----------------------------------------------------------------------
请教:关于.m文件和simulink模型的仿真速度的问题。
一个控制问题,用.m文件做仿真,运行时间大约15分钟;然后作成simulink模型, 运行了24小时也没有得到结果。这是什么原因?simulink就如此慢吗?小弟对simul ink不熟,请指教有无加快速度的办法?(accelerate用过了)。谢谢。
问题不清楚,只能猜一下 simulink是不是有代数环?在command窗口看看 m文件用pcode处理一下
-------------------------------------------------------------------------
请教:如何在.m文件中实现变量延时?就象simulink中的传输延时模块的功能。谢 谢。
没办法,m文件中只是数值计算,只有调用顺序问题,如果使用差分方程计算,对应于滞后一些的循环 simulink仿真是有时间基准的
-------------------------------------------------------------------------
Simulink模型的PreLoadFcn属性在哪里写的呀?谢谢
打开模型文件——file--model property——callbacks,进行修改即可
-------------------------------------------------------------------------
存在simulink下的file.mat中的文件结果怎么才能在程序里调用呢?需要什么设置
?filename是pend.mat,为什么用以下的语句打不开呢? load pend.mat
t=signals(1, ;
总是提示 :Undefined variable.
你的pend.mat文件中有该变量吗?
-------------------------------------------------------------------------
为什么我在simulink里仿真得不到较好的单位阶跃图??五阶传递函数
是不是你阶跃模块的第一个参数没改?是默认的1而不是0
-------------------------------------------------------------------------
用MATLAB6.5版时,选用simpowersystems库中的Voltage Measurement模块,为何在每次运行时,都报Data type mismatch错误,而在6.1版时则没有这个问题?估计你把非电气库的线和电气库连线混用了
-------------------------------------------------------------------------
我想知道SIMULINK中的延迟模块(就是那个上面显示1/z的模块),它的延迟时间可以改变吗?比如让它作一个0.001秒的延迟参数应该怎么设?
双击unit delay模块 改sample time
-------------------------------------------------------------------------
MATLAB里得NOTBOOK是做什么用的?
MATLAB与WORD的连接,只要在命令窗口中输入:notebook -setup 按照提示就可完成设置
-------------------------------------------------------------------------
离散的微分在SIMULINK中是哪块?
没有,得自己搭建
-------------------------------------------------------------------------
在SIMULINK里的FROM FILE 模块里读入矩阵为什么总显示错误信息? 我在模块上写读入文件名时信息提示该文件不是矩阵,可明明是矩阵文件呀!
该矩阵文件还应该包括时间信息。
作者:mikle 发表时间:2008-8-18
13:00:00
第3楼
Simulink 常见问题集锦
用simulink实现的线性滤波器初始条件怎么设 ?
默认的模块不能设置,到SimulinkExtras里找
-------------------------------------------------------------------------
请问如何利用simulink中的模块得到三角波(等腰)信号?
用repeat sequence模块,只需定义一个周期的即可
-------------------------------------------------------------------------
如何在Simulink中做到实时的响应键盘输入?我的意思是就像在VC中那样,按下任意键后就有一个消息产生通知程序。
我看了帮助,waitforbuttonpress只能在GUI中使用。而且不能做到实时响应。
Simulink支持回调函数的
在simulink仿真试验中,我能不能把simulink中的数据用Toworkspace写入到matlab的工作窗口中,然后经过处理再用from workspace写入到simulink中。
可以,如果不原意写,还可以利用自动生成的tout和yout
-------------------------------------------------------------------------
请问这里有人是学导航的么?有个小小问题请教。
我用Simulink的s-function做了一个运动轨迹数据发生模块,但是数据总有些不对 。后来无意中在Simulink Extras中发现了一大堆好东东,对我最有用的是Aerospace Blocks下面的东西,竟然连导航计算都有现成的模块!真是喜出望外啊。
我的问题就是:大家有谁用过这些block的吗?我猜想一定有现成的产生轨迹数据的模块,哪位大侠指点一二!!谢谢!!
6.5版本带更正式的Aerospace Blockset
-------------------------------------------------------------------------
powersystems blockset中的电容电阻的问题
这个模块中怎么没发现电容电感电阻.三级管等东西啊,是不是不在这个模块里,要是 在的话在哪,我怎么没发现啊
三极管没有,需要自己搭建,电阻电容有,从RLC电路提取
-------------------------------------------------------------------------
如何延长simulink的运行时间
可以用Simulation/Parameters菜单设置终止时间 ,放慢播放可以采用定步长方法 ,设置小的步长
-------------------------------------------------------------------------
在simulink中如何对一个连续信号进行抽样,使用什么样的模块或模块的组合。
信号后加保持器,如零阶保持器或Unit Delay模块
-------------------------------------------------------------------------
如何在matlab仿真中使用16进制
Simulink下调用MATLAB写的转换模块
-------------------------------------------------------------------------
已知信号[t,v],如何在其上加高斯白噪声?要求用simulink作
直接用加法器就可以
-------------------------------------------------------------------------
我要产生一个随时间变化频率的正弦波,变化的频率是来自上一模块的调节输出量 ,而且频率是正负变化的,围绕50HZ上下波动,如:+/-0.5HZ左右.我现在产生的正弦波也可变频,但只能正变??
用Fcn模块可以任意变
-------------------------------------------------------------------------
simulink产生等腰三角波
实时simulink的repeating sequence模块
-------------------------------------------------------------------------
我是一名电力工程师,需要用matlab解决一些诸如电力网计算,化简方面的问题,请问大家在哪可以得到这方面的信息?
你可以用simpowersystems模块库。里面几乎包括了所有电力系统的元件。我正在用 它搞发电机的故障分析。 感觉matlab十分精深广博,要学的太多了。
-------------------------------------------------------------------------
如何把编好的s-function加到simulink中去。
将S-FUNCTION模块拖到SIMULINK下,将模块名与S-FUNCTION一致,M文件不要求编译 ,C文件要编译
-------------------------------------------------------------------------
仿真示波器中的黑色背景能否处理?
想处理示波器的背景一般是想得到图片,最好把数据存到工作空间中,用plot绘图,这样的灵活性会更大
-------------------------------------------------------------------------
如何在SIMULINK中实现u=u/max(u)
没法实现,因为u在仿真前没有,无从建立最大值
-------------------------------------------------------------------------
如何在SIMULINK中取出状态变量?
可以存入文件,然后导入.
-------------------------------------------------------------------------
请问如何用simulink进行变参数系统仿真? 就是说,仿真参数会随输出的值不同而发生变化,不再是个常数;而且对于输出(阶跃函数为输入)的每一点都要进行判断,如在某一范围内就计算并调整参数,如在另 一范围内就重新计算并调整参数。。。。。系统为多输入的比较负载的传度函数,能告诉我如何仿真吗?谢谢!
用离散的仿真形式,各环节都用变量或者函数实现
-------------------------------------------------------------------------
参数时变的线性五阶系统在MATLAB中应该怎样仿真?(用mdl文件可以做?还是用S函数?或者离散形式做成m文件仿真?)其中参数的变化规律是已知的,哪位高人帮我解决一下这个问题,深表感谢!!!
可以自己用simulink模块搭建,不一定非得用s函数,参考一下传递函数的状态方程实现内容,可以选择一组积分器,再搭建模型
-------------------------------------------------------------------------
在matlab中,用M文件的形式编写了S-function,请问怎么把他变成自己的仿真模块, 其中有什么注意事项.
只需用S-function模块,打开它并在其中设置上你编写的S-function模块的函数名和参数,就可以直接使用了
-------------------------------------------------------------------------
本人在用simulink仿真某电机控制系统时,需要一整流桥模型
input:ua,ub uc
output:ia,ib,ic
简单的二极管模型,很难传递数据,因此本人编程M函数并通过。却发现其在SIMULINK中,只能传递一组数据,只能用s函数?还是有别的高招?
作为一个向量不就行了?
效果不错,可是有一点不明白.首先,simulink可以认为是传递瞬时数据的一种工具
,假设时间一周期有50个采样点,作为一个向量输出时,[ia,ib,ic]他们的最终数 据形式应该是1X150,我不知道最终的ia,ib,ic数组会是什么样子?
好像有些问题?
你可以参考matlab Fcn模块的帮助,自己建一个简单的模型试一下。
-------------------------------------------------------------------------
请问,在simulink里怎么设置初值
用其preloadfcn属性
-------------------------------------------------------------------------
在.m文件中调用模块仿真,应该如何做呢?
用sim函数
-------------------------------------------------------------------------
对形如dx/dt=Ax(t)+Bx(t-d) (d为滞后时间常数),如何获得它的零输入响应?
用普通的状态方程模块,其输入信号前加一个时间延迟模块即可。如果用控制系统 工具箱中的ss对象,则将其ioDelay属性设置为d也能起到同样的作用
-------------------------------------------------------------------------
假设在matlab下,我写了一个生成gold序列的gold.m文本,但我希望能够像maxplus一样把它变成一个subsystem,这样我就可以在simulink下调用它了,请问我该怎么做才能把*.m的文件变成模块?
建议采用S-函数的格式改写你的源程序,而不是子系统形式。
-------------------------------------------------------------------------
另外再问一个比较弱的问题 能不能建一个我自己的模块库?我自己做的模块能不能直接从库中调用?怎么做?
可以,用Simulink下的File/New/Library就能建立新的库,而不是模块
-------------------------------------------------------------------------
我看了一些s-function的资料,有点印象了,但是,如何实现时钟控制的上升沿(或下降沿)触发?在matlab的库中有没有类似的*.m文件例子?
可以使用Simulink子系统模块来控制
-------------------------------------------------------------------------
simulink图形仿真中用于MOSFET输出M端测量的选路器在那一库中?
Simulink自己的Signal & Systems中
-------------------------------------------------------------------------
在simulink中如何实现 y=45x^2+f(s)x,其中x是输入,y是输出,f(s)是传递函数
假设模块某部分的输入信号为x,则可以用一个*模块,将x分别付给该模块的2路输入,就生成了x^2, 再在后面接一个比例环节就得到45x^2了。同时再让x通过一个传递函数就得到令一录信号,将这两路信号加起来就得出输出的y
-------------------------------------------------------------------------
怎样求两个空间向量的夹角,如[1,0,0]和[1,1,1]
ang=A'*B/(norm(A)*norm( );
-------------------------------------------------------------------------
如何把使用save workspace as保存过大量变量重新导出?
应该用load能全部导出
simulink仿真时间和实际物理系统的时间有什么关系?(是否相等?),谢谢
仿真时间应该表示物理时间,比如说你选则终止时间为10,不管你花多长时间仿真 ,得到的结果表示10秒内的系统性能。
-------------------------------------------------------------------------
在simulink中,变量y从1变化到1000,我希望将y=300时(或者是y大于300的时刻)
的当前时间t提取出来,并定义为一个workspace中的变量,或者作为simulink中的一个标量,请问如何做到?
将y作为一个输出信号,这样就可以对其后处理了。 另外,如果想在线使用该量,则加一个判断,如用比较模块判断y>=300, 300可以是 常数输入
-------------------------------------------------------------------------
请问在simulink里面的低通滤波器在哪里
你可以用离散模块组中的filter,低通参数应该由信号处理工具箱中函数设计
-------------------------------------------------------------------------
请问怎样用matlab命令调出simulink文件中的scope的波形
有一个自编的小程序
function myfigure_scope(input)
a=size(input.signals);
b=a(1,2);%b为信号的个数
c=1;%c为循环变量
while c<=b;
subplot(b,1,c)
plot(input.time,input.signals(1,c).values)
c=c+1;
grid
end
其中input为示波器中保存的structure with time数据
-------------------------------------------------------------------------
怎样把simulink中的图形输出转到m文件下进行编程输出
用outport模块表示输出,然后用sim函数进行仿真,而不是用simulation菜单
-------------------------------------------------------------------------
我是用的from workspace比较多,所以每次赋值比较麻烦。我想设一个默认值,不知如何设?请各位赐教!!!谢谢
只能逐个设置,另外,建议使用outport而不使用toworkspace。使用前者将在工作空间中产生yout变量
-------------------------------------------------------------------------
如何在matlab的 simulink中读入dat文件
可以用from file模块!
-------------------------------------------------------------------------
power system blockset与simulink的模块不能相连吗?
能相联,但之间需要转换,如应该使用电压表和电流表等将其连接到simulink模块上
-------------------------------------------------------------------------
SIMUKINK中有两个模块,一个是PID模块,一个是模糊控制模块,现在我想用模糊控制模块算出来的新的PID的参数值更改原来的PID参数,我不知道怎么做,请各位大侠指条明路,救命啊!
应急方法:将PID参数设置为全局变量试试
作者:mikle 发表时间:2008-8-18
13:05:00
第4楼
Simulink 常见问题集锦
我现在正在做毕业设计,遇到了一个问题。我要一边用m文件进行编程,做一些界面。一边用simulink进行仿真,在进行图形输出时,我遇到了一个问题,就是怎么样把simulink的输出而转到m文件下来。因为我要在图形输出的窗口中还要添加一些按钮。使它的外观更漂亮。
matlab的simulink的输出可以输出到工作空间种来
也可以通过输出到一个mat文件等
还可以直接用x-ygraph来做!
just have a test!
-------------------------------------------------------------------------
SIMULINK仿真中的给定信号如果是非标准的(如非正弦波:由2个分段函数定义),怎么产生?
可以用matlab fcn模块自己编写
-------------------------------------------------------------------------
如何取得离散信号中某时刻(假定是k时刻)及k-1时刻、k+1时刻的值,用Simulink中的哪些模块可以实现?
接z(-1)和z即可
-------------------------------------------------------------------------
我从电气库中找到一个电机的模型,但是却和我前面的simulink组成的模型不相通,那是怎么回事,有知道的吗,请告诉我,谢谢了。
PowerSystems Toolbox中模块不是所有端口都能接收Simulink信号的,例如电机模型中,电压输入是需要电压源模块的(Power systems Blockset模块),而转矩可以输入simulink信号。如果实在想给电压端口输入simulink信号,需要给其先加一个受控电压源,用simulink信号控制受控信号
-------------------------------------------------------------------------
请问在simulink里面的施密特触发器在哪里.
在simulink extra组中
-------------------------------------------------------------------------
在用simulink进行仿真时,仿真过程中有信号是随时间衰减的波动信号,仿真时间为0~t,如何计算t(i)~t(i+1)时间内的信号的积分平均?
check the "integrator block with resetting".
You can re-set the integrator at any time you specified.
-------------------------------------------------------------------------
我用simulink画了一个单输入输出的开环控制系统,想得到该系统的bode图,用什么方法获得该系统的开环传递函数?
1) 修正原来的simulink模型,使其输入用inport表示,输出用outport表示。这些端口在6。1版中分别位于sources和sinks组。
2)用[a,b,c,d]=linmod2('模型名'); 提取状态方程模型
3) G=ss(a,b,c,d);
4)bode(G)
为什么我用simulink仿真时,只有ode5能运行而其他的不行呢?
是否是模型中包含离散模块或实时模块
-------------------------------------------------------------------------
我在用SIMULINK解二元微分方程组时,在MATLAB命令窗口输入X1,X2的初值如X01=1 ;X02=-2;然后启动仿真程序,但该初值似乎无法进入我的模型,查YOUT变量组, 值为0。而我直接在SIMULINK中分别双击X1,X2的积分模型,将INITIAL CONDITION 设为1和-2,然后仿真,可以得到结果。我觉得是MATLAB命令窗口与SIMULINK未联系 起来,但不知如何处理。
将积分模块的Initial Condition Source置为external。将From Workspace模块 加入积分模块的x0端口。From Workspace中设置你在matlab命令窗口中输入的变量名。
-------------------------------------------------------------------------
simulink 如何调用m文件
不用s函数,使用matlab function模块调用.m函数也行
-------------------------------------------------------------------------
simulink里是否有记忆历史数据的模块?
Signal Routing\Data Store Memory
-------------------------------------------------------------------------
我做系统辨识 请问大侠怎么产生m序列?
用simulink的异或门和DFlipFlop
-------------------------------------------------------------------------
在simulink模拟控制中,方框图如何以图片格式输出?
先选中,在用edit 中的copy model to clipboard,然后粘贴即可
-------------------------------------------------------------------------
Simulink仿真时Matlab Function对话框中的代码怎么设置?
自己编写matlab function,然后在matlab function模块里填写自编的.m函数名即可。
-------------------------------------------------------------------------
simulink中正弦sin的积分显示是1-cos,为何不是-cos
如果输入u(t),t0为初始时刻,则在t时刻积分器的输出y(t)是u(t)从t0至t的积分值
。所以如果t0=0,u(t)=sin(t),y(t)=-cos(t0)+cos(0)=1-cos(t)
-------------------------------------------------------------------------
在simulink下如何实现取余数?
remain
-------------------------------------------------------------------------
为什么simulink 可改变步长而调用ode函数不行
因此只能设置求解器的初始补偿和最大步长。simulink里因为需要对离散系统进行
仿真等原因所以有定步长算法可以选择。
p.s.如果一定需要定步长算法,可以自己根据算法编程实现。
在simpowersystems中没有单(两)相电机模块,我用simulink做了个模块,但现在问题是我如何把它转化成simpowersystems形式的模块呢?也就是让它成为电力模块,比如说我现在要用单相电机做负载,通过它的参数的变化看它对前面电路的影响,即实现他们电与电的联系,单单simulink模型是不能与simpowersystems block直接相联的,这就是问题的关键,如何实现他们的转化。
使用受控电流源方式可是实现simulink到simpowersystems的转变
-------------------------------------------------------------------------
Q:simulink中的模块参数seed是什么意思???许多模块中都要求输入seed值,有何含义?应如何确定该值?
A:可以输入任意整数。由于实际上的随机数生成大多为伪随机序列,如果输入同样的seed将产生相同的随机序列,需要输入不同的seed以产生不同的随机序列。
-------------------------------------------------------------------------
Q:小波工具箱中waverec函数的问题
我有个问题想要请教各位,我对其中的多尺度一维小波重构函数waverec一直不太理解,用这个函数重构的小波系数,不管是哪个尺度上的低频或高频系数,得到的都是和采样信号相同的个数,比如采样信号是2000个,进行3尺度分解,则重构的第3尺度上的低频系数也是2000个,我试过了,不论哪个尺度的系数重构,都和原始采样信号一样的长度。而我用appcoef提取的第3尺度上的低频系数却是250个(因为进行了2抽取),为什么重构的系数却体现不出二抽取?而mallat算法重构系数是逐级2插补,我想知道重构的系数与分解的系数区别到底在什么地方?重构后的系数与分解的系数不相等,那还是小波变换系数吗?
A:小波重构时可以通过两种途径:一种就是书上常见的采用小波系数插值后滤波实现。然后在一级一级的插值,滤波最后实现重构。而另外一种这是在不同的尺度上直接恢复成和原始信号一样的长度,然后直接相加就行了(这个步骤你可以看看matlab pdf文档中的Wavelets: A New Tool for Signal Analysis部分)
-------------------------------------------------------------------------
Q:如何将训练好的神经网络用于我的应用中?....
A: sim 或者 gensim........
answer:在m文件中使用sim,使用help network/sim察看使用方法。
如果供simulink模型中仿真用,请使用gensim生成网络模型,然后放入任何系统仿真模型中使用,并且还能够生成代码用于实时仿真。见下面的例子,使用gensim将神经网络变成Simulink模型。
net = newff([0 1],[5 1]);
gensim(net);
然后可以使用RTW生成S-function目标。
-------------------------------------------------------------------------
q:能不能在Simulink的环境下,从PC 机的串口收发数据
我编写了一段C51单片机程序用于对电机进行控制,而一些控制参数我希望能够从 Simulink 通过 RS232 口发给 C51单片机,并通过 RS232 口得到 C51 的反馈信息。但XPC 的 RS232 模块好像不能用,是不是我对 XPC 的工作方式理解有误?请各位老师指导,谢谢!
*.asv文件是哪里来的?
在使用matlab6.5.1时发现一个有趣的问题,就像用word编辑*.doc文件时生成一个临时文件一样,当我用matlab编辑*.m文件时系统自动生成了一个*.asv文件(不是临时的),打开后和打开同名的*.m后的效果是一样的,而且这个现象好像是matlab6.5.1版本才有的,以前用matlab6.2好像没有这样的问题,可不可以请高手介绍一下这个神秘的*.asv文件呢,为什么要生成这个文件,有什么用呢?
Ps:release12和release13具体又是什么含义呢?
自动保存的备份文件(应该不是在matlab6.5.1才有的)
可以通过在preference的 Editor下面那个auto save选项设置不保留备份的
------------------------------------------------------------------------
如何循环调用SIMULINK模型并保存结果?
我在仿真时,经常需要修改 simulink 模型参数并保存仿真结果. 我现在的笨办法是多次运行simulink, 手工修改仿真参数, 繁得要命! 经常成天地守在计算机边等结果.
我试过用m文件自动调用模型并保存结果, 但是"未遂". 我的例子是这样的: 调用simulink模块trysave.mdl 10次, 由该模块把循环变量k写在不同的矩阵result1~result10中.
调用模块的行命令:
for k=1:10
sim trysave
end
trysave.mdl 文件已经上传, 模型初始化命令: assignin('base','output',[strcat('result',num2str(k))]);
运行结果: 只保存了一个结果(变量output), 是最后一次循环的值.
------------------------------------------------------------------------
clear;
for k=1:10
simk = k;
sim untitled01;
assignin('base',strcat('simout',num2str(k)),simout01);
end
untitled01.mdl已上传,你试一下
------------------------------------------------------------------------
[求助]定义变量怎么定义连续变量?
大家好,
我在学习MATLAB中,会碰到要定义连续变量。
大家能告诉我怎么定义吗?
用m文件的话,你把计算时间步长取的短一些就可以了;用Simulink可以实现连续量,当然计算机是不可能实现真正的连续量的,只不过是计算时间步长非常小而已。
------------------------------------------------------------------------
[求助]请问SIMULINK有矩阵模块和求逆模块吗?
在 DSP BlockSet 的Math Functions 中
------------------------------------------------------------------------
[求助]请问simlink中有没有测量
请问simlink中有没有测量 电路 中电流 电压 幅值的东西?
波形基本上接近正弦(可以按照正弦处理)
我想测量幅值~~~
测量模块只能测量瞬时值~
通过瞬时值算出来的幅值由太多的纹波,不好去处
请指点一个办法吧~
试试DSP Blockset/Filtering/Filter Designs/AnalogFilterDesign
------------------------------------------------------------------------
关于积分器触发使用的问题
我的建模系统中用到了积分器模块,我希望它在我给电trigger输入口信号上升沿时才进行积分,我的触发脉冲是一个SPWM产生信号,第一个上升沿不在0时刻,而是0.02s,但是积分器却在0~0.02s中间也产生了积分,弄了好久都不知道为什么,请大侠们指教!是不是simulink积分器模块的初值设定有问题,如果是,怎么更改初值设定啊??
在输入上进行逻辑控制
-------------------------------------------------------------------------
Q;如何从仿真模块生成S函数
A:生成S-function Target是十分简单的,特别是在MATLAB 6中,S-function Target 还支持变步长算法。 如果系统中安装并配置了C(比如MSVC)编译器,然后打开System Target File浏览器,选择rtwsfcn.tlc,就可以了。 我试了一下vdp这个例子,不需任何改动,只需要更换System Target File就可以编译成功。然后自动弹出一个新的模型窗口,里面放着一个S-function 块。这个块是能够工作的。
-------------------------------------------------------------------------
Q:是不是可以用S-函数将m文件与SIMULINK连接?是不是可以用S-函数将m文件与SIMULINK连接?SIMULINK可以转换成m文件吗?
A:利用m文件的S-function就可以把m函数与Simulink相连,Simulink原则上不能转化成m形式。但视你的应用可能有一些变通的方式。
-------------------------------------------------------------------------
Q:我要用SIMULINK做一个模块,需输入16进制数怎末办,我输入的参数和输出的参数都是16进制数怎末办?
A:在Simulink/Signals&Systems下面有一个“Data Type Conversion”模块可以用来转换成INT16
作者:mikle 发表时间:2008-8-18
13:06:00
第5楼
Simulink 常见问题集锦
Q:请问如何产生动态时间间隔的脉冲?在simulink中,pulse generator的参数periods一旦确定,那么
脉冲的时间间隔就固定下来了。怎么样才能动态的修改periods参数呢?
或者有没有其他的模块能实现动态时间间隔的脉冲?请高手指点!
A:先是采用三角函数块生成变频率的正弦信号,然后再用逻辑运算符(信号大于零时输出1,小于零时输出0)生成变间隔的脉冲。
这只是作为一个提示。
-------------------------------------------------------------------------
Q:我用simulink的power system blockset仿真一个小系统,需要产生一个频率和相角都是变量的正弦信号。不知那位高手能指点在下一下,我所需要的频率和相角都是由另外的模块输入。频率是由Power System Blockset的Machines Measurement Delux 输出的。相角也是测量到的,由Fourier模块输出。我想利用这两个输出量做成一个正弦电压源,不知道能不能做?
谢谢您的帮助。
A:如果你需要做一个交流电压源的话,有一个办法。你把Simulink/PowerSystem中的AC Voltage Source用Look Under Mask方式打开,就会发现驱动源是一个正弦信号发生器。用一个可调频率相位的C-Mex S-function替换掉这一部分就可以了
-------------------------------------------------------------------------
Q:能否实时采集外界信号
simulink能够实时采集wave device的信号,但是不知道能不能实时采集其他设备(比如A/D采样板)的信号,还是需要写上一段程序将采样板的信号读入。如果能,该怎么处理,实时性如何?希望各位大侠指点。
A:Simulink提供的S-function功能应当能够满足你与外界硬件接口的需要。关键是写出与硬件相关的驱动,由于S-function 是通过C编写的,可以调用操作系统以及硬件的相关编程资源,技术上应当不成问题。
关于实时性无法保证,因为Simulink环境以及相应的PC都不是一个实时环境。确保实时性,必须采用具备实时内核的实时操作系统,或实时仿真系统。MathWorks提供了两个应用于实时的产品,一个是xpc,另外一个是Real-Time Window Target. 这两个产品都带有相当部分的硬件驱动部分,支持一些主要的硬件借口卡。如果你使用的板卡不在支持之列的话,你依旧需要自己去编写相应的驱动部分。
[求助]simulink可以做相图吗?
动力学相图,位移和速度为座标的平面相图,用SIMULINK可以做吗?
如果使用matlab6.5的话,就在simulink-->sinks-->XYGraph,
还可以画两个相图simulink-->Neural Network Blockset-->Control System-->X(2Y)Graph
------------------------------------------------------------------------
[求助]Simulink中的信号输入输出
在Simulink中,信号模块库里的子系统的输入端口模块(In1)可以从Matlab工作空间里输入变量。但不知怎么从外部输入到Simulink中。望告知。bow,bow,bow!
我觉得In1也只能从simulink空间中输入数据.
方法如下:
1.从工作空间中输入数据
matlab--+>simulink--+>sources--+>from workspace (sinim)
2.从外部输入数据文件
matlab--+>simulink--+>sources--+>from file (untilted.mat),说明:untilted.mat是matlab数据格式,你可将输入文件存到 .txt文件,然后到如到工作空间,最后使用save保存这个工作空间的数据变量.
3.从simulink字系统中互相导入数据
matlab--+>simulink--+>sources--+>In1(1)
4.将数据导出到工作空间
matlab--+>simulink--+>sinks--+>to workspace(simout)
5.将数据导出到文件
matlab--+>simulink--+>sinks--+>to file (untilted.mat)
6.将数据导出到simulink字系统
matlab--+>simulink--+>sinks--+>out(1)
请教一个关于simulink的运行的问题
怎样设置才能使simulink程序在运行时,知道当前运行到了哪个模块.
可以使用Simulink的debug工具单步运行模型,这样运行到的块会被高亮显示。
------------------------------------------------------------------------
Simulink的C代码自动生成功能
我已做好一个Simulink仿真系统运行合理,我想把它转成实用的C应用程序,这样就
不用再写一遍了,怎么做呢, 一本书上提了一句,Simulink具有C代码自动生成功
能,可是没有进一步的介绍,哪位大侠用过或了解一点???
simulation--->simulation paratmeter --->Real time workshop
(solover change to fixed solver)
------------------------------------------------------------------------
关于simulink中的模糊控制器
我建立了一个模糊控制系统,想用simulink建模运行一下,观察响应曲线,模块都已选好,线也连上了,,,,,可是总是不能运行,,,,出错提示,,找不到模糊控制器的.FIS文件,,,,,,,,,我是这样做的:
双击模糊控制器的图标,,,提示输入文件名,,,我建的模糊器的文件名的mohu.fis,把它输进去,,,,,,为什么不行???????????是不是文件名要加上路径,,,,我加了,D:\MATLAB...........
\MOHU.FIS,,,还是不行,怎么回事????????
你要把你建立的模糊控制系统输出到matlab的工作环境中。
具体:在模糊控制器窗口下打开“文件”的下拉菜单,然后可以看到将模糊控制文件
输出到工作环境中。就ok了
谢谢 ,按你说的方法,已OK了
可是又出现新的问题了,提示写:
An error occurred while propagating data type 'boolean' from block 'lun/Fuzzy Logic
Controller/FIS Wizard/Defuzzification1/Zero Strength (COA)', output port 1
可是我在命令行给定一输入值,使用evalfis函数,能求出输出值,可以正常运行的
啊
为什么放到了simulink里说我的模糊器有上面的莫名其妙的错误?
你可以在你的simulink窗口下改变simulation的属性:打开simulation的simulation
parameter,出现对话窗口,到advanced,在optimization下的boolean logic signal,在
边上的action框选成off即可。
问一下,你现在的模糊控制是针对什么对象的控制,本身的模糊控制方法是自适应
的吗?想交流一下。
问题解决了,顺利运行,谢谢各位的帮助
------------------------------------------------------------------------
我的仿真体系有很多个模块,每个模块都有两个输出值,一个是模块计算的值,一个是表示该模块的序号,我需要将所有模块的计算值的最小值求出,并得到该最小值对应的模块的序号,怎样在Simulink中实现?(有可能有多个模块都是最小值)
将模块按顺序mux后输入matlab function模块,内部函数find(min(u( ))
------------------------------------------------------------------------
对于规模非常大的系统,比如包含控制、电子、通信、机械、热能等领域多达十几个子系统的复杂大系统,采用Simulink能否胜任?
原则上Simulink可以仿真任意大的系统,但在这种情况下,需要你充分熟悉了解simulink的仿真机制和优化方法(否则速度会让你受不了),并且擅长simulink调试,这个要求还是比较高的,但确实能做。
如何求频率?
已经得到一条正弦函数的曲线。 如果才能获得它的频率值啊? 就是要得到他的频率输出。
用simulink实现
我个人的思路,
设正弦函数为sin(wt),求两次导数-(w^2)*sin(wt),这就得到两组数据一组sin(wt),一组-(
w^2)*sin(wt),将sin(wt)看作一个变量,然后进行曲线拟合,得到一个数据,然后开方就得
到w.这种思路你看看行不行?
我可能表述的不太清楚。
有一个信号,是正弦信号,但是频率是可调的。
如和在simulink中实现,输入端在调整正弦波的频率,输出端就可以看到频率的变
化。
如果在matlab命令行环境下当然好办啊。可是如何在simulink下实现?
是实时的啊
个人思路,不知是否可行:
先将正弦波变为脉冲,例如大于零为1,小于零为0。
分别用脉冲的下降沿和上升沿来触发两个捕获器,用以捕捉系统仿真时间。
将两个捕获器的输出相减即为正弦波周期的一半。
我试验一下,这样可以,不过在仿真参数中要设置相应的步长。否则结果不好。还有就是在第一个周期内无法得到合适的值。
matlab可以打开一个excel文件吗?
matlab-->start-->matlab-->matlab excel builder-->matlab excel builder,这对应matlab6.5
的
------------------------------------------------------------------------
如何设置saturation模块中变化的上下限
例如:
上限 = a; 下限 = -a;
变量 a 随仿真过程变化。
谢谢!
想了半天总算解决了,开始想直接在saturation模块中设置变量解决,不过没有成功。开始我想通过在satruation后面加一个变化的增益,结果还是不行。
最后想到了乘法,通过在satruation模块后面加上一个production模块(在math operations中)和另外一个变化的输入相乘,这样就解决了你的问题了。不知道符合你的要求没有?欢迎讨论。
这样饱和模块可能会将有用的信息滤掉,建议采用命令行仿真解决变参数的问题确实存在那种情况,最好的方法使用matlab编写一个函数,然后用MATLAB fcn来调用编写好的matlab M文件,我想这样可以满足任何要求的过滤,只要你想得到的就能够实现