怎样在matlab function模块中实现多输入

作者&投稿:景柴 (若有异议请与网页底部的电邮联系)
Simulink Matlab function模块能实现多输出吗,比如我的函数有四个输出 啊,a,b,c,d~

MATLAB Function是一个模块,但是如果你输入的是一个向量,同样也会输出一个向量的。这个同m文件里面编程是一样的。
MATLAB Function里面只能填写一个函数名称,无法编写m文件。
如果你需要编写m文件的话,可以使用Embedded MATLAB Function ,我想你说的是这个。
如果要输出多个数据,可以这样写:
function y = fcn(u)
y=[y1 y2 y3];
这样就可以当成一个向量输出了。外面只有一个输出端口,里面的数据是向量形式。
如果这样写:
function [y1,y2,y3] = fcn(u)
那么就会有三个输出端口。

PS:我再说一遍,MATLAB Function是不能编写m文件的,只有Embedded MATLAB Function才行,你定义y为2*100的矩阵,类似于y = [1 2 3 4;5 6 7 8];这样就行了。输出就是一个矩阵。

从图判断,你用的是Embedded MATLAB Function模块;
MATLAB的switch...case语句和C语言不同,case的后面应该接逗号而不是冒号;
你的u1、u2、u3多处误写成u(1)、u(2)、u(3);
条件语句的最后一个分支
else(u1==0&&u2==-1)
到底有没有条件判断?有条件应该用elseif,无条件的话后面不应该有括号;
你要确保所有执行路径输出参数都会被赋值,例如:
if语句必须要有else而不能只有elseif;
switch语句必须有otherwise而不能只有case。

尽管从你的实际数据来说可能不会出现else和otherwise分支的情况,但从程序的要求上来说,必须要保证执行路径的完备,否则不能通过编译。

1、打开matlab,新建一个空白的simulinik模型。

2、打开simulink的元件库,如图中红圈所示。

3、在搜索栏输入“matlab function”,开始搜索,就可以在右边找到对应的模块。

4、第一个和最后一个是一样的。选中后按住鼠标左键不放,拖到空白的simulink界面中。

5、为了示例使用方法,编一个加法器的功能。把两个正弦波发生器,一个示波器用同样的方法拖到界面中来。

6、双机matlab function模块,打开编辑代码的界面。

7、默认的函数名称是fcn,输入量是u,输出量是y,都可以按照需要修改名称。这里把函数名称改成fcn_add。

8、重新定义输入量,因为有两个输入口,所以在声明函数时,分别命名为source_1和source_2,

9、保存以后回到simulink界面,可以发现,之前只有一个输入端的matlab function模块现在有两个输入端了。

10、按照对应的端口连接这些模块。设置两个正弦波发生器的参数,一个设置成幅值为1,频率为1HZ,另外一个是幅值为1,频率为2HZ。双击波形发生器就可以设置参数了。

11、准备仿真,仿真按钮就是上面的播放键。

12、然后等仿真结束后,双击scope示波器查看结果。可以发现这个matlab function模块已经实现了加法器的作用。



代码写的很乱:

1、开始的时候y1、y2、y3都还没赋值,直接就 y=[y1 y2 y3] 肯定会出错。

2、同样,ua、ub、uc也没有赋值就用了。而且u作为输入参数传进来,对u赋值就把输入给覆盖了。

3、变量x(1)、x(2)哪里来的?

 

按照你现在的模块,可以把代码改成:

function y = fcn(x)
y1=x(2)*cos(x(1));
y2=x(2)*cos(x(1)-2*pi/3);
y3=x(2)*cos(x(1)+2*pi/3);
y=[y1 y2 y3];

不过,实现这样的功能似乎没有使用MATLAB Function模块(早期版本里叫Embedded MATLAB Function)的必要,直接用Interpreted MATLAB Function就可以了(早期版本里叫MATLAB Fcn)。

 

如果用MATLAB Function模块,可以利用其支持多输入多输出的特点,把函数改成:

function [y1,y2,y3] = fcn(x1,x2)
y1=x2*cos(x1);
y2=x2*cos(x1-2*pi/3);
y3=x2*cos(x1+2*pi/3);

下面的方框图示意了两种函数写法对应的模块(模型已作为附件上传)。

 



fcn(ua,ub,uc)就是三个输入的


河南省15227943688: 如何使用matlab中的工具箱 -
绪宏经络: 首先,确认一下你的matlab是什么版本的,早期的版本叫做工具箱(toolbox),新版叫做应用程序(APP) 其次,确认一下你需要使用什么工具箱,直接在工作窗口中输入就可以调用了,如果不知道调用命令,可以在图形界面用鼠标选择就好了. 最后,放一个图,一目了然,本人用的是2015b这个版本,主界面上有个应用程序,直接选择就可以了,可以根据自己的需要排序,本人常用神经网络,所以就摆在第一位了.

河南省15227943688: 如何使用matlab制作GUI界面 -
绪宏经络: 打开Matlab 新建Gui File--New--GUI 出现如下窗口 可点击Blank GUI,出现布局窗口 保存为FunctionDrawing.fig,存储路径默认,出现如下变换 通过选取Edit Text,Static Text,Axes按键,布局如下界面 各字体、字样可通过双击相应选体进行修改....

河南省15227943688: matlab function模块怎么用 -
绪宏经络: 可以打开ports and data manager中新建所需使用的变量并将scope设置为parameter,即可!Simulink中embedded matlab function使用workspace中的变量

河南省15227943688: matlab 工具箱怎么使用?是不是要安装? -
绪宏经络: 一、MATLAB自带工具箱: 1.查看方式: 首先详细介绍一下MATLAB自带工具箱的使用. 在不熟悉一些调用工具箱的命令的时候,可以按照如下图所示: 在MATLAB主窗口中,点击左下角start--toolboxes,就会罗列出你的MATLAB已经安装的...

河南省15227943688: matlab里面怎么用公式编辑器 -
绪宏经络: 可以用专业公式编辑器,我常用亿图公式编辑器编写各种公式文档.支持图片、latex等格式.最主要的是,它支持在线使用,无需下载软件,感觉很方便.

河南省15227943688: 怎么在matlab中运行c程序 -
绪宏经络: 1.准备好C语言程序,清楚C语言的入口函数2.编写mexfunction函数.mexfunction函数为C语言与MATLAB语言的接口函数.调用实例在mylinedetect.c文件中.在MATLAB中调用mex指令编译相关文件,将C语言编译为MEX文件.3.编译完成后,...

河南省15227943688: 如何使用matlab? -
绪宏经络: 使用前需先了解其基本情况:1. Matlab 是一种集计算,解方程,画图,模拟仿真等功能于一身的强大工具,是大学生建模竞赛的必备软件!2. 其在各个领域都有着强大的函数库支持,所以,通用性很强,适...

河南省15227943688: 如何使用MATLAB这把“利器”开发机器人 -
绪宏经络: 每次配置Armadillo时都要打开config.hpp重新进行操作,比较繁琐.有没有一种更加方便的配置方法呢?答案是肯定的. 首先,将config.hpp中的ARMA_USE_LAPACK和ARMA_USE_BLAS宏定义语句注释掉或者利用#undef取消这两个宏定义.既然配置是否使用lapack或者blas的关键是配置这两个宏!

河南省15227943688: matlab中 function怎么用啊? -
绪宏经络: 可以直接用polyval([1 0 3 4],0), 由于你这个是多项式,很好处理的 如果是不能写成矩阵系数的非线性函数,相对就麻烦一点了 比如y=sin(x)+x^2,要求x=0处的值,可以这样求, f=inline('sin(x)+x^2','x')%表示符号函数 y=f(0)%将x=0带入符号函数...

河南省15227943688: matlab的程序包如何使用及运行 -
绪宏经络: 提供两个方式: 1.将包解压到一个目录,然后点击其中的一个文件,matlab打开编辑器,点编辑器上的运行按钮(快捷键:F5),Matlab提示你改变工作目录,选“是”(yes),程序执行. 2.将包的目录添加到Matlab的路径中去,点“File”—>“set path”—>"add"找到包目录,点左下角的"save".以后在工作区输入相应的函数名就可以了.注意,函数名最好不与Matlab的工具箱函数名不要重复.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网