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函数运行在仿真结束前是不能干预的。

参考技术B 大家没有什么兴趣啊,我后来发现了一个院长关于GUI的帖子,觉得用GUI的界面设计,面向对象的编程技术应该可以实现人机互动,不知道GUI界面能否调用simulink程序
以上回答你满意么?

MATLAB之simulink与command window窗口交互


 

simulink中scope数据传输到command window窗口中



再完善!!!

以上是关于matlab编程怎么和simulink交互?的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何批量读取mat文件中的矩阵?

matlab中如何读取mat文件的矩阵

MATLAB之simulink与command window窗口交互

Matlab如何导入mat文件并查看其中的数据

怎么把M文件导入Simulink

matlab中的mat文件是啥,怎么用呢?