matlab编程怎么和simulink交互?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab编程怎么和simulink交互?相关的知识,希望对你有一定的参考价值。
我用simulink画了一个框图,很简单,就是一个正弦信号输入和一个scope显示输出波形,文件名为sinewave.mdl
我关掉simulink之后,怎么通过matlab编程代码,来控制sinewave.mdl里正弦信号的参数(频率等),并且让sinewave.mdl自动运行后显示输出波形?
也就是说,达到的效果就是:我在程序界面输入一个函数及其参数频率,然后程序会自动运行sinewave.mdl并且显示scope波形(其中正弦信号是我输入的频率)。
(1)就是不用自己打开sinewave.mdl,而是在编程界面输入一个命令,然后可以运行出sinewave.mdl中scope的波形。如果直接输入sinewave.mdl的话,确实可以弹出mdl的框图,但是没有scope的波形。我希望输入一个命令后,能运行sinewave.mdl并显示scope的波形。
(2)就是频率,其他的参数我可以类推。我是打算编一个函数,而这个函数的参数用来直接修改sinewave.mdl中sine wave的频率。
1、Simulink中新建“New Model”,按如下电路搭建模型。
2、其中,电源模块和测量模块的参数设置如下。
3、锁相环参数设置如下图所示。
4、运行后,示波器波形如下图所示,可看到精确的锁相。
注意事项:
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多。
参考技术A基本思路
1、运行Simulink模型可以使用sim函数,仿真结果可以通过以下几种方式导出:
(1)设置Scope模块的Save data to workspace;
(2)模型中加入Outport模块,并设置模型的Workspace I/O;
(3)使用To Workspace模块项工作区导入数据。
2、参数的修改可以使用以下方法:
(1)使用工作区变量作为模块参数,例如,Sine Wave模块的Frequency不直接输入数据,而是使用变量名f,并在仿真之前给f赋值。
(2)使用set_param函数直接修改模块参数。
需要楼主明确一下要求
(1)所谓【让sinewave.mdl自动运行后显示输出波形】,是指打开模型,在Scope中显示波形,还是自己创建绘图窗口进行绘图?
(2)要修改的有哪些参数?除频率外,还要改什么?
(3)这句话:【在程序界面输入一个函数及其参数频率】,“函数”是指什么?是指准备编写的程序吗?
做了一个简单的例子,请参见附件。
直接运行m文件即可,或者指定频率,例如:
zd2138230940810538948(5)由于字数限制,我写在问题补充里了。
反正就是说:现在我只有一个sinewave.mdl,我编一个程序,比如control ( f ) 然后我在界面执行 control (50) 之后,自动运行sinewave.mdl并且弹出scope的波形,此时sine wave的平率为50。
我就是不知道这个control (f) 怎么写……(再加50分)
把我给的附件中的zd2138230940810538948.m改成control.m就可以了。
哦对了,模型或者使用我提供的那个,或者把你的模型中Sine Wave模块的Frequency参数改成f。
追问我去……大神你太给力了!
最后最后,还想问一下,m文件里第一行和最后一行我知道,是创建函数和打开SCOPE,不过这三行分别是啥意思啊?
if ~nargin, f = 1; end
assignin('base','f',f);
sim('sinewave')
if ~nargin, f = 1; end
用于为频率提供默认值(如果在调用函数时没有提供输入参数,比如直接在编辑器里面按F5运行)。
assignin('base','f',f);
把指定的频率值传递到基本(base)工作区。Simulink模型只能使用基本工作区中的变量。
sim('sinewave')
运行指定的Simulink模型。与通过GUI运行不同的是,使用sim函数运行在仿真结束前是不能干预的。
以上回答你满意么?
MATLAB之simulink与command window窗口交互
simulink中scope数据传输到command window窗口中
再完善!!!
以上是关于matlab编程怎么和simulink交互?的主要内容,如果未能解决你的问题,请参考以下文章