本帖最后由 咖小啡 于 2012-3-8 11:16 编辑
命令行如何运行simulink外部模式build和start
用sim()函数
该函数的调用格式为:
[t,x,y]=sim(f1,tspan,op
tions,ut)
其中f1为SIMULINK的模型名,tspan为
仿真时间控制变量;参数options为模型控制参数;ut为外部输入向量。
-------------------------------------------------------------------------
Q:请问matlab中的仿真模块,可以看到起源程序吗?
A:那些基本模块是看不了源代码的,有很多模块是用subsystem组成的,你可以用
look under mask(鼠标右键)看到里面是怎样用子模块搭接的,还有很多是
由s函数写成的simulink的模块,这些直接edit sfunname(s函数的名字)
就可以看到源代码
-------------------------------------------------------------------------
Q:在simulink参数中设置的步长是50e-6,在系统中有一个simout模块向MATLAB中传递数据,但是希望以1e-3的步长获取数据,因该如何设计?
A:在simout模块中直接设定仿真步长是不能运行的。
需要插入一个"zero order hold"模块,将该模块的采样时间设置为1e-03就可以了。
-------------------------------------------------------------------------
Q:simulink中IGBT等电力元件都有个m极,是什么作用的?
A:用于测量流过IGBT电流及其电压
-------------------------------------------------------------------------
Q:用simlink画的图,在示波器中显示,如何复制到word中?
A:告诉你一个办法,在加上示波器的地方加上to workspace改为array,在主窗口中plot直接抓过去也行吧。Edit下有copy model选项
-------------------------------------------------------------------------
Q:simulink中的mask问题
请问如何封装
prompt,varible填啥
如何初始化
A:prompt中,填写变量的提示,如:直线斜率
variable中填写变量名.如:k
-------------------------------------------------------------------------
Q:有关神经网络工具箱
为什么当训练和仿真时,命令窗口会出现一堆warning?如:
*WARNING* TRAINBPX is an obsolete function.
Use NNT2FF and TRAIN to 更新 and train your network.
无效 NNTWARN OFF to suppress NNT warning messages.
trainbpx,simuff这些命令应该怎么用?
A:你用的神经网络不太适合你的matlab版本,有点过时了,对于bp网络,像用newff训练就没问题,建议你可买一本较新的神经网络参考书。还可看matlab的help
-------------------------------------------------------------------------
Q:一个关于simulink仿真的问题
根据4个输出a1、a2、a3、a4判断,输出最大的ai所对应的数。这样一个过程不用s函数能不能实现阿?我用了if else语句,但是无法把不同时刻的不同输出值汇总成串行数据流输出。
A:用mux将各路信号构造成向量信号,再用matlab fcn下的max对之进行操作即可
-------------------------------------------------------------------------
Q:怎么实现在simulink仿真过程中与其他程序进行通讯,即如何在simulink仿真过程中实时读出数据。不论通过网络或变量空间中的变量都行,应该怎么实现,请教!
A:用to workspace或to file 都可以保存仿真时的数据
-------------------------------------------------------------------------
Q:请问如何在simulink中实现A/D和D/A转换。
A:有相关的模块,在xpc中,不过得和硬件对应上
-------------------------------------------------------------------------
Q:请问如何改变ode45函数中的步长
A:ode45现在的版本不允许显式给出步长
-------------------------------------------------------------------------
Q:请教:如何将workspace中的输入,输出数据存为*.txt文件?
A:save filename varname -ASCII,
varname是要存储的变量名,之间用空格分隔
-------------------------------------------------------------------------
Q:将PID的SIMULINK图的输出仿真图形怎样与自己设计的界面中的按钮连接 回调函数怎么编?
A:要显示的数据用Outport端子表示,就可以用sim函数直接获得数据了
-------------------------------------------------------------------------
Q:怎样才能增加采样点?在Simulink里边连接框图,阶跃step输入经过一积分环节1/s,用out输出至workspace,tout跟yout都为56×1,能不能把56变成更大的值?怎么设置?谢谢!!!!!
A:能增加,simulink中你得到的是默认的结果如果向增加,则可以认为减小允许的误差限,即在simulink中的relative error项
,如将其变化成e-6或其他更小的值。另外还可以通过定步长方法进行仿真(这时应该注意要确认能保证仿真精度要求)
-------------------------------------------------------------------------
Q:我最近在做电机控制的仿真时,遇到一个问题。我是用matlab6.5中的电机模块做为模型,然后自己搭建了一个变频器。在运行中经常出现运行到一半时就进行不下去了,simulink报错说步长有问题,我修改后还是不行。请问在做有关电机的仿真时,应该如何设置仿真环境。
A:试试改变仿真算法,如ode15s
-------------------------------------------------------------------------
Q:运行时出现下面的提示:
Derivative 无效 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)
A:仿真系统数值不稳定,是模型的问题或是其他问题
-------------------------------------------------------------------------
Q:相位Phase的单位deg是什么意思?
A:degree,it is same to say 度
-------------------------------------------------------------------------
Q:workspace,数据多了就存不下啦?采样时间设为0.01秒,运行若干秒以后,在workspace中打开scopedata(示波器format设定为Array,limit data points to last没选择!)时,系统提示:cannot display variables with more then 10000 elements,什么原因?
A:数据量大了是不能显示得实在不显示,可以考虑将矩阵存到文件中,你再去读文件了。
另外:你的矩阵维数是多少?connot display variables with more than 65536 elements!
a=ones(500,499);双击workspace中的a矩阵
-------------------------------------------------------------------------
Q:simulink中的数据为什么会丢失啊?我在做一个比较大的系统的rtw仿真可是在仿真时,要是记录数据的模块(比如示波器,to workspace)等比较多或者步长比较小时,就会出现记录的数据不全或者干脆丢失的现象,比如to workspace的数据只有后面或者前面的几百个,丢了好多。记录不全。出现提示信息如下
- Warning: Received shutdown message from target 15.002000 seconds ago.
- Waiting for final data logging buffer andlogging terminator...Warning: Received shutdown message from target 30.004000 seconds ago.
- Waiting for final data logging buffer and logging terminator...Warning: Received shutdown message from target 45.003000 seconds ago.
- Waiting for final data logging buffer and logging terminator...Warning: Received shutdown message from target 60.008000 seconds ago.
- Waiting for final data logging buffer and logging terminator...Warning: Did not received final data logging buffer and logging
- terminator from target. Disconnecting...
复制代码
这样运行就停止了,但数据不全。另外,有时候运行时会出现突然黑屏现象。还有就是在rtw中如何进行数据的实时观测,scope不可以了,在gui中编程可以实现吗?
A:看看原来的simulink模型,其中示波器或其他输出环节中可能选择了存最新若干数据的选项,解除它即可
-------------------------------------------------------------------------
Q:请问白噪声譜生产随即数问题?已知白噪声譜为S0,如何生产随即数序列?
遇到问题:
1,用simulink中的Band-Limited
White Noise模块,设置 Noise Power为S0,
可是为什么Sample time取不同的值,生成的
生产随即数序列大小相差很大,有数量级的差别,
不应该有那么大吧??
2,生产随机数的大小与Seed的取值有关吗?
3,有无更简单的方法。
A:你注意到1的现象很好,实际该模块发出的噪声是经过除以sqrt(T)后的结果,T是采样周期。所以你觉得幅值不同,这样可以保证噪声的强度符合有求。
-------------------------------------------------------------------------
Q:请教:怎样能查到仿真块的程序?
A:simulink自带的模块如果不是mask的就查不了
-------------------------------------------------------------------------
Q:为什么用SUMULINK里to file模块中的数据传不到M文件?需要设置什么?谢谢
A:是写入.mat中的。用load命令读入到workspace。
-------------------------------------------------------------------------
Q:请问如何产生带限白噪声,如果先产生随机数再通过滤波器,请问,滤波器归一化频率如何确定,和采样频率归一化吗?
A:使用Band-Limited White Noise模块
-------------------------------------------------------------------------
Q:请教:关于.m文件和simulink模型的仿真速度的问题。一个控制问题,用.m文件做仿真,运行时间大约15分钟;然后作成simulink模型,运行了24小时也没有得到结果。这是什么原因?simulink就如此慢吗?小弟对simulink不熟,请指教有无加快速度的办法?(accelerate用过了)。谢谢。
A:问题不清楚,只能猜一下simulink是不是有代数环?在command窗口看看m文件用pcode处理一下
-------------------------------------------------------------------------
Q:请教:如何在.m文件中实现变量延时?就象simulink中的传输延时模块的功能。谢谢。
A:没办法,m文件中只是数值计算,只有调用顺序问题,如果使用差分方程计算,对应于滞后一些的循环simulink仿真是有时间基准的
-------------------------------------------------------------------------
Q:Simulink模型的PreLoadFcn属性在哪里写的呀?谢谢
A:打开模型文件——file--model property——callbacks,进行修改即可
-------------------------------------------------------------------------
Q:存在simulink下的file.mat中的文件结果怎么才能在程序里调用呢?需要什么设置?filename是pend.mat,为什么用以下的语句打不开呢?
- load pend.matt=signals(1,;
复制代码
总是提示 :Undefined variable.
A:你的pend.mat文件中有该变量吗?
-------------------------------------------------------------------------
Q:为什么我在simulink里仿真得不到较好的单位阶跃图??五阶传递函数
A:是不是你阶跃模块的第一个参数没改?是默认的1而不是0
-------------------------------------------------------------------------
Q:用MATLAB6.5版时,选用simpowersystems库中的Voltage Measurement模块,为何在每次运行时,都报Data 无效 mismatch错误,而在6.1版时则没有这个问题?
A:估计你把非电气库的线和电气库连线混用了
-------------------------------------------------------------------------
Q:我想知道SIMULINK中的延迟模块(就是那个上面显示1/z的模块),它的延迟时间可以改变吗?比如让它作一个0.001秒的延迟参数应该怎么设?
A:双击unit delay模块改sample time
-------------------------------------------------------------------------
Q:MATLAB里得NOTBOOK是做什么用的?
A:MATLAB与WORD的连接,只要在命令窗口中输入:notebook -setup 按照提示就可完成设置
-------------------------------------------------------------------------
Q:离散的微分在SIMULINK中是哪块?
A:没有,得自己搭建
-------------------------------------------------------------------------
Q:在SIMULINK里的FROM FILE 模块里读入矩阵为什么总显示错误信息?我在模块上写读入文件名时信息提示该文件不是矩阵,可明明是矩阵文件呀!
A:该矩阵文件还应该包括时间信息。
-------------------------------------------------------------------------
Q:用simulink实现的线性滤波器初始条件怎么设 ?
A:默认的模块不能设置,到SimulinkExtras里找
-------------------------------------------------------------------------
Q:请问如何利用simulink中的模块得到三角波(等腰)信号?
A:用repeat sequence模块,只需定义一个周期的即可
-------------------------------------------------------------------------
Q:如何在Simulink中做到实时的响应键盘输入?我的意思是就像在VC中那样,按下任意键后就有一个消息产生通知程序。
我看了帮助,waitforbuttonpress只能在GUI中使用。而且不能做到实时响应。
Simulink支持回调函数的在simulink仿真试验中,我能不能把simulink中的数据用To workspace写入到matlab的工作窗口中,然后经过处理再用from workspace写入到simulink中。
A:可以,如果不原意写,还可以利用自动生成的tout和yout
-------------------------------------------------------------------------
Q:请问这里有人是学导航的么?有个小小问题请教。我用Simulink的s-function做了一个运动轨迹数据发生模块,但是数据总有些不对。后来无意中在Simulink Extras中发现了一大堆好东东,对我最有用的是Aerospace Blocks下面的东西,竟然连导航计算都有现成的模块!真是喜出望外啊。我的问题就是:大家有谁用过这些block的吗?我猜想一定有现成的产生轨迹数据的模块,哪位大侠指点一二!!谢谢!!
A:6.5版本带更正式的Aerospace Blockset
-------------------------------------------------------------------------
Q:powersystems blockset中的电容电阻的问题,这个模块中怎么没发现电容电感电阻.三级管等东西啊,是不是不在这个模块里,要是在的话在哪,我怎么没发现啊
A:三极管没有,需要自己搭建,电阻电容有,从RLC电路提取
-------------------------------------------------------------------------
Q:如何延长simulink的运行时间
A:可以用Simulation/Parameters菜单设置终止时间 ,放慢播放可以采用定步长方法,设置小的步长
-------------------------------------------------------------------------
Q:在simulink中如何对一个连续信号进行抽样,使用什么样的模块或模块的组合。
A:信号后加保持器,如零阶保持器或Unit Delay模块
-------------------------------------------------------------------------
Q:如何在matlab仿真中使用16进制
A:Simulink下调用MATLAB写的转换模块
-------------------------------------------------------------------------
Q:已知信号[t,v],如何在其上加高斯白噪声?要求用simulink作
A:直接用加法器就可以
-------------------------------------------------------------------------
Q:我要产生一个随时间变化频率的正弦波,变化的频率是来自上一模块的调节输出量,而且频率是正负变化的,围绕50HZ上下波动,如:+/-0.5HZ左右.我现在产生的正弦波也可变频,但只能正变??
A:用Fcn模块可以任意变
-------------------------------------------------------------------------
Q:simulink产生等腰三角波
A:实时simulink的repeating sequence模块
-------------------------------------------------------------------------
Q:我是一名电力工程师,需要用matlab解决一些诸如电力网计算,化简方面的问题,请问大家在哪可以得到这方面的信息?
A:你可以用simpowersystems模块库。里面几乎包括了所有电力系统的元件。我正在用它搞发电机的故障分析。感觉matlab十分精深广博,要学的太多了。
-------------------------------------------------------------------------
Q:如何把编好的s-function加到simulink中去。
A:将S-FUNCTION模块拖到SIMULINK下,将模块名与S-FUNCTION一致,M文件不要求编译,C文件要编译
-------------------------------------------------------------------------
Q:仿真示波器中的黑色背景能否处理?
A:想处理示波器的背景一般是想得到图片,最好把数据存到工作空间中,用plot绘图,这样的灵活性会更大
-------------------------------------------------------------------------
Q:如何在SIMULINK中实现u=u/max(u)
A:没法实现,因为u在仿真前没有,无从建立最大值
-------------------------------------------------------------------------
Q:如何在SIMULINK中取出状态变量?
A:可以存入文件,然后导入.
-------------------------------------------------------------------------
Q:请问如何用simulink进行变参数系统仿真?就是说,仿真参数会随输出的值不同而发生变化,不再是个常数;而且对于输出(阶跃函数为输入)的每一点都要进行判断,如在某一范围内就计算并调整参数,如在另一范围内就重新计算并调整参数。。。。系统为多输入的比较负载的传度函数,能告诉我如何仿真吗?谢谢!用离散的仿真形式,各环节都用变量或者函数实现参数时变的线性五阶系统在MATLAB中应该怎样仿真?(用mdl文件可以做?还是用S函数?或者离散形式做成m文件仿真?)其中参数的变化规律是已知的,哪位高人帮我解决一下这个问题,深表感谢!!!
A:可以自己用simulink模块搭建,不一定非得用s函数,参考一下传递函数的状态方程实现内容,可以选择一组积分器,再搭建模型
-------------------------------------------------------------------------
Q:在matlab中,用M文件的形式编写了S-function,请问怎么把他变成自己的仿真模块,其中有什么注意事项.
A:只需用S-function模块,打开它并在其中设置上你编写的S-function模块的函数名和参数,就可以直接使用了
-------------------------------------------------------------------------
Q:本人在用simulink仿真某电机控制系统时,需要一整流桥模型无效:
ua,ub uc
output:ia,ib,ic
简单的二极管模型,很难传递数据,因此本人编程M函数并通过。却发现其在SIMULINK中,只能传递一组数据,只能用s函数?
还是有别的高招?
A:作为一个向量不就行了?效果不错,可是有一点不明白.首先,simulink可以认为是传递瞬时数据的一种工具,假设时间一周期有50个采样点,作为一个向量输出时,[ia,ib,ic]他们的最终数据形式应该是1X150,我不知道最终的ia,ib,ic数组会是什么样子?好像有些问题?你可以参考matlab Fcn模块的帮助,自己建一个简单的模型试一下。
-------------------------------------------------------------------------
Q:请问,在simulink里怎么设置初值
A:用其preloadfcn属性
-------------------------------------------------------------------------
Q:在.m文件中调用模块仿真,应该如何做呢?
A:用sim函数
-------------------------------------------------------------------------
Q:对形如dx/dt=Ax(t)+Bx(t-d) (d为滞后时间常数),如何获得它的零输入响应?
A:用普通的状态方程模块,其输入信号前加一个时间延迟模块即可。如果用控制系统工具箱中的ss对象,则将其ioDelay属性设置为d也能起到同样的作用
-------------------------------------------------------------------------
Q:>假设在matlab下,我写了一个生成gold序列的gold.m文本,但我希望能够像maxpls一样把它变成一个subsystem,这样我就可以在simulink下调用它了,请问我该怎么做才能把*.m的文件变成模块?
A:建议采用S-函数的格式改写你的源程序,而不是子系统形式。
-------------------------------------------------------------------------
Q:另外再问一个比较弱的问题能不能建一个我自己的模块库?我自己做的模块能不能直接从库中调用?怎么做?
A:可以,用Simulink下的File/New/Library就能建立新的库,而不是模块
-------------------------------------------------------------------------
Q:我看了一些s-function的资料,有点印象了,但是,如何实现时钟控制的上升沿(或下降沿)触发?在matlab的库中有没有类似的*.m文件例子?
A:可以使用Simulink子系统模块来控制
-------------------------------------------------------------------------
Q:simulink图形仿真中用于MOSFET输出M端测量的选路器在那一库中?
A:Simulink自己的Signal & Systems中
-------------------------------------------------------------------------
Q:在simulink中如何实现 y=45x^2+f(s)x,其中x是输入,y是输出,f(s)是传递函数
A:假设模块某部分的输入信号为x,则可以用一个*模块,将x分别付给该模块的2路输入,就生成了x^2, 再在后面接一个比例环节就得到45x^2了。同时再让x通过一个传递函数就得到令一录信号,将这两路信号加起来就得出输出的y
-------------------------------------------------------------------------
Q:怎样求两个空间向量的夹角,如[1,0,0]和[1,1,1]
A:ang=A'*B/(norm(A)*norm();
-------------------------------------------------------------------------
Q:如何把使用save workspace as保存过大量变量重新导出?
A:应该用load能全部导出simulink仿真时间和实际物理系统的时间有什么关系?(是否相等?),谢谢仿真时间应该表示物理时间,比如说你选则终止时间为10,不管你花多长时间仿真,得到的结果表示10秒内的系统性能。
-------------------------------------------------------------------------
Q:在simulink中,变量y从1变化到1000,我希望将y=300时(或者是y大于300的时刻)的当前时间t提取出来,并定义为一个workspace中的变量,或者作为simulink中的一个标量,请问如何做到?
A:将y作为一个输出信号,这样就可以对其后处理了,另外,如果想在线使用该量,则加一个判断,如用比较模块判断y>=300, 300可以是常数输入
-------------------------------------------------------------------------
Q:请问在simulink里面的低通滤波器在哪里
A:你可以用离散模块组中的filter,低通参数应该由信号处理工具箱中函数设计
-------------------------------------------------------------------------
Q:请问怎样用matlab命令调出simulink文件中的scope的波形
A:有一个自编的小程序
- function myfigure_scope(无效)a=size(无效.signals);b=a(1,2);%b为信号的个数c=1;%c为循环变量while c<=b;subplot(b,1,c)plot(无效.time,无效.signals(1,c).values)c=c+1;gridend
复制代码
其中无效为示波器中保存的structure with time数据
-------------------------------------------------------------------------
Q:怎样把simulink中的图形输出转到m文件下进行编程输出
A:用outport模块表示输出,然后用sim函数进行仿真,而不是用simulation菜单
-------------------------------------------------------------------------
Q:我是用的from workspace比较多,所以每次赋值比较麻烦。我想设一个默认值,不知如何设?请各位赐教!!!谢谢
A:只能逐个设置,另外,建议使用outport而不使用toworkspace。使用前者将在工作空间中产生yout变量
-------------------------------------------------------------------------
Q:如何在matlab的 simulink中读入dat文件
A:可以用from file模块!
-------------------------------------------------------------------------
Q:power system blockset与simulink的模块不能相连吗?
A:能相联,但之间需要转换,如应该使用电压表和电流表等将其连接到simulink模块上
-------------------------------------------------------------------------
Q:SIMUKINK中有两个模块,一个是PID模块,一个是模糊控制模块,现在我想用模糊控制模块算出来的新的PID的参数值更改原来的PID参数,我不知道怎么做,请各位大侠指条明路,救命啊!
A:应急方法:将PID参数设置为全局变量试试
-------------------------------------------------------------------------
Q:我现在正在做毕业设计,遇到了一个问题。我要一边用m文件进行编程,做一些界面。一边用simulink进行仿真,在进行图形输出时,我遇到了一个问题,就是怎么样把simulink的输出而转到m文件下来。因为我要在图形输出的窗口中还要添加一些按钮。使它的外观更漂亮。
A:matlab的simulink的输出可以输出到工作空间种来也可以通过输出到一个mat文件等还可以直接用x-ygraph来做!
java test!
-------------------------------------------------------------------------
Q:SIMULINK仿真中的给定信号如果是非标准的(如非正弦波:由2个分段函数定义),怎么产生?
A:可以用matlab fcn模块自己编写
-------------------------------------------------------------------------
Q:如何取得离散信号中某时刻(假定是k时刻)及k-1时刻、k+1时刻的值,用Simulink中的哪些模块可以实现?
A:接z(-1)和z即可
-------------------------------------------------------------------------
Q:我从电气库中找到一个电机的模型,但是却和我前面的simulink组成的模型不相通,那是怎么回事,有知道的吗,请告诉我,谢谢了。
A:PowerSystems Toolbox中模块不是所有端口都能接收Simulink信号的,例如电机模型中,电压输入是需要电压源模块的(Power systems Blockset模块),而转矩可以输入simulink信号。如果实在想给电压端口输入simulink信号,需要给其先加一个受控电压源,用simulink信号控制受控信号
-------------------------------------------------------------------------
Q:请问在simulink里面的施密特触发器在哪里.
A:在simulink extra组中
-------------------------------------------------------------------------
Q:在用simulink进行仿真时,仿真过程中有信号是随时间衰减的波动信号,仿真时间为0~t,如何计算t(i)~t(i+1)时间内的信号的积分平均?
A:check the "integrator block with resetting".
You can re-set the integrator at any time you specified.
-------------------------------------------------------------------------
Q:我用simulink画了一个单输入输出的开环控制系统,想得到该系统的bode图,用什么方法获得该系统的开环传递函数?
A:1) 修正原来的simulink模型,使其输入用inport表示,输出用outport表示。这些端口在6。1版中分别位于sources和sinks组。
2)用[a,b,c,d]=linmod2('模型名'); 提取状态方程模型
3) G=ss(a,b,c,d);
4)bode(G)
-------------------------------------------------------------------------
Q:为什么我用simulink仿真时,只有ode5能运行而其他的不行呢?
A:是否是模型中包含离散模块或实时模块
-------------------------------------------------------------------------
Q:我在用SIMULINK解二元微分方程组时,在MATLAB命令窗口输入X1,X2的初值如X01=1;X02=-2;然后启动仿真程序,但该初值似乎无法进入我的模型,查YOUT变量组,值为0。而我直接在SIMULINK中分别双击X1,X2的积分模型,将INITIAL CONDITION设为1和-2,然后仿真,可以得到结果。我觉得是MATLAB命令窗口与SIMULINK未联系起来,但不知如何处理。
A:将积分模块的Initial Condition Source置为external。将From Workspace模块加入积分模块的x0端口。From Workspace中设置你在matlab命令窗口中输入的变量名。
-------------------------------------------------------------------------
Q:simulink 如何调用m文件
A:不用s函数,使用matlab function模块调用.m函数也行
-------------------------------------------------------------------------
Q:simulink里是否有记忆历史数据的模块?
A:Signal Routing\Data Store Memory
-------------------------------------------------------------------------
Q:我做系统辨识 请问大侠怎么产生m序列?
A:用simulink的异或门和DFlipFlop
-------------------------------------------------------------------------
Q:在simulink模拟控制中,方框图如何以图片格式输出?
A:先选中,在用edit 中的copy model to clipboard,然后粘贴即可
-------------------------------------------------------------------------
Q:Simulink仿真时Matlab Function对话框中的代码怎么设置?
A:自己编写matlab function,然后在matlab function模块里填写自编的.m函数名即可。
-------------------------------------------------------------------------
Q:simulink中正弦sin的积分显示是1-cos,为何不是-cos
A:如果输入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)
-------------------------------------------------------------------------
Q:在simulink下如何实现取余数?
A:remain
-------------------------------------------------------------------------
Q:为什么simulink 可改变步长而调用ode函数不行
A:因此只能设置求解器的初始补偿和最大步长。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........
ps:在m文件中使用sim,使用help network/sim察看使用方法。如果供simulink模型中仿真用,请使用gensim生成网络模型,然后放入任何系统仿真模型中使用,并且还能够生成代码用于实时仿真。见下面的例子,使用gensim将神经网络变成Simulink模型。
net = newff([0 1],[5 1]);
gensim(net);
然后可以使用RTW生成S-function目标。
-------------------------------------------------------------------------
Q:*.asv文件是哪里来的?在使用matlab6.5.1时发现一个有趣的问题,就像用word编辑*.doc文件时生成一个临时文件一样,当我用matlab编辑*.m文件时系统自动生成了一个*.asv文件(不是临时的),打开后和打开同名的*.m后的效果是一样的,而且这个现象好像是matlab6.5.1版本才有的,以前用matlab6.2好像没有这样的问题,可不可以请高手介绍一下这个神秘的*.asv文件呢,为什么要生成这个文件,有什么用呢?
Ps:release12和release13具体又是什么含义呢?
A:自动保存的备份文件(应该不是在matlab6.5.1才有的),可以通过在preference的 Editor下面那个auto save选项设置不保留备份的
------------------------------------------------------------------------
Q:定义变量怎么定义连续变量?大家好,我在学习MATLAB中,会碰到要定义连续变量。大家能告诉我怎么定义吗?
A:用m文件的话,你把计算时间步长取的短一些就可以了;用Simulink可以实现连续量,当然计算机是不可能实现真正的连续量的,只不过是计算时间步长非常小而已。
------------------------------------------------------------------------
Q:请问SIMULINK有矩阵模块和求逆模块吗?
A:在 DSP BlockSet 的Math Functions 中
------------------------------------------------------------------------
Q:请问simlink中有没有测量,请问simlink中有没有测量 电路 中电流 电压 幅值的东西?波形基本上接近正弦(可以按照正弦处理)我想测量幅值~~~测量模块只能测量瞬时值~通过瞬时值算出来的幅值由太多的纹波,不好去处请指点一个办法吧~
A:试试DSP Blockset/Filtering/Filter Designs/AnalogFilterDesign
------------------------------------------------------------------------
Q:关于积分器触发使用的问题,我的建模系统中用到了积分器模块,我希望它在我给电trigger输入口信号上升沿时才进行积分,我的触发脉冲是一个SPWM产生信号,第一个上升沿不在0时刻,而是0.02s,但是积分器却在0~0.02s中间也产生了积分,弄了好久都不知道为什么,请大侠们指教!是不是simulink积分器模块的初值设定有问题,如果是,怎么更改初值设定啊??
A:在输入上进行逻辑控制
------------------------------------------------------------------------
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 无效 Conversion”模块可以用来转换成INT16
------------------------------------------------------------------------
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. 这两个产品都带有相当部分的硬件驱动部分,支持一些主要的硬件借口卡。如果你使用的板卡不在支持之列的话,你依旧需要自己去编写相应的驱动部分。
------------------------------------------------------------------------
Q:simulink可以做相图吗?动力学相图,位移和速度为座标的平面相图,用SIMULINK可以做吗?
A:如果使用matlab6.5的话,就在simulink-->sinks-->XYGraph,还可以画两个相图simulink-->Neural Network Blockset-->Control System-->X(2Y)Graph
------------------------------------------------------------------------
Q:Simulink中的信号输入输出,在Simulink中,信号模块库里的子系统的输入端口模块(In1)可以从Matlab工作空间里输入变量。但不知怎么从外部输入到Simulink中。望告知。bow,bow,bow!
A:我觉得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)
应该就这些了。
------------------------------------------------------------------------
Q:请教一个关于simulink的运行的问题,怎样设置才能使simulink程序在运行时,知道当前运行到了哪个模块.
A:可以使用Simulink的debug工具单步运行模型,这样运行到的块会被高亮显示。
------------------------------------------------------------------------
Q:Simulink的C代码自动生成功能,我已做好一个Simulink仿真系统运行合理,我想把它转成实用的C应用程序,这样就不用再写一遍了,怎么做呢, 一本书上提了一句,Simulink具有C代码自动生成功能,可是没有进一步的介绍,哪位大侠用过或了解一点???
A:simulation--->simulation paratmeter --->Real time workshop(solover change to fixed solver)
------------------------------------------------------------------------
Q:关于simulink中的模糊控制器,我建立了一个模糊控制系统,想用simulink建模运行一下,观察响应曲线,模块都已选好,线也连上了,,,,,可是总是不能运行,,,,出错提示,,找不到模糊控制器的.FIS文件,,,,,,,,,我是这样做的:
双击模糊控制器的图标,,,提示输入文件名,,,我建的模糊器的文件名的mohu.fis,把它输进去,,,,,,为什么不行???????????是不是文件名要加上路径,,,,我加了,D:\MATLAB..........\MOHU.FIS,,,还是不行,怎么回事????????
A:你要把你建立的模糊控制系统输出到matlab的工作环境中。
具体:在模糊控制器窗口下打开“文件”的下拉菜单,然后可以看到将模糊控制文件输出到工作环境中。就ok了
Q+:谢谢 ,按你说的方法,已OK了,可是又出现新的问题了,提示写:
An error occurred while propagating data 无效 'boolean' from block 'lun/Fuzzy Logic
Controller/FIS Wizard/Defuzzification1/Zero Strength (COA)', output port 1
可是我在命令行给定一输入值,使用执行fis函数,能求出输出值,可以正常运行的啊.
为什么放到了simulink里说我的模糊器有上面的莫名其妙的错误?
A:你可以在你的simulink窗口下改变simulation的属性:打开simulation的simulation parameter,出现对话窗口,到advanced,在optimization下的boolean logic signal,在边上的action框选成off即可。
------------------------------------------------------------------------
Q:我的仿真体系有很多个模块,每个模块都有两个输出值,一个是模块计算的值,一个是表示该模块的序号,我需要将所有模块的计算值的最小值求出,并得到该最小值对应的模块的序号,怎样在Simulink中实现?(有可能有多个模块都是最小值)
A:将模块按顺序mux后输入matlab function模块,内部函数find(min(u())
------------------------------------------------------------------------
Q:对于规模非常大的系统,比如包含控制、电子、通信、机械、热能等领域多达十几个子系统的复杂大系统,采用Simulink能否胜任?
A:原则上Simulink可以仿真任意大的系统,但在这种情况下,需要你充分熟悉了解simulink的仿真机制和优化方法(否则速度会让你受不了),并且擅长simulink调试,这个要求还是比较高的,但确实能做。
------------------------------------------------------------------------
Q:如何求频率?已经得到一条正弦函数的曲线。 如果才能获得它的频率值啊? 就是要得到他的频率输出。
A:用simulink实现,我个人的思路:
设正弦函数为sin(wt),求两次导数-(w^2)*sin(wt),这就得到两组数据一组sin(wt),一组-(w^2)*sin(wt),将sin(wt)看作一个变量,然后进行曲线拟合,得到一个数据,然后开方就得到w.这种思路你看看行不行?
------------------------------------------------------------------------
Q:我可能表述的不太清楚。有一个信号,是正弦信号,但是频率是可调的。如和在simulink中实现,输入端在调整正弦波的频率,输出端就可以看到频率的变化。如果在matlab命令行环境下当然好办啊。可是如何在simulink下实现?是实时的啊
个人思路,不知是否可行:
先将正弦波变为脉冲,例如大于零为1,小于零为0。分别用脉冲的下降沿和上升沿来触发两个捕获器,用以捕捉系统仿真时间。将两个捕获器的输出相减即为正弦波周期的一半。
A:我试验一下,这样可以,不过在仿真参数中要设置相应的步长。否则结果不好。还有就是在第一个周期内无法得到合适的值。
------------------------------------------------------------------------
Q:matlab可以打开一个excel文件吗?
A:matlab-->start-->matlab-->matlab excel builder-->matlab excel builder,这对应matlab6.5
的
------------------------------------------------------------------------
Q:如何设置saturation模块中变化的上下限例如:
上限 = a; 下限 = -a;变量 a 随仿真过程变化。谢谢!
A:想了半天总算解决了,开始想直接在saturation模块中设置变量解决,不过没有成功。开始我想通过在satruation后面加一个变化的增益,结果还是不行。最后想到了乘法,通过在satruation模块后面加上一个production模块(在math operations中)和另外一个变化的输入相乘,这样就解决了你的问题了。不知道符合你的要求没有?欢迎讨论。这样饱和模块可能会将有用的信息滤掉,建议采用命令行仿真解决变参数的问题确实存在那种情况,最好的方法使用matlab编写一个函数,然后用MATLAB fcn来调用编写好的matlab M文件,我想这样可以满足任何要求的过滤,只要你想得到的就能够实现。
10