新浪博客

关于matlab/Simulink中多端选择开关功能的实现

2014-09-10 10:46阅读:
关于Matlab/Simulink中多端选择开关功能的实现
在Simulink中有multiport switch可以实现开关选择的功能,但是在使用过程中发现multiport switch并不能将矩阵整体形式作为输入。因此,这给在Simulink中实现矩阵运算带来了一些不方便。由于multiport switch基本实现的是switch-case控制结构,因此,可以通过Simulink中的Matlab Function通过编程的方式实现选择开关的功能。但是在Matlab Function使用过程中出现了程序语句解析错误的问题(Output argument 'y' is not assigned on some execution paths;Errors occurred during parsing of MATLAB function等),下面以一个具体的实例来说明该问题的解决方法。
Matlab Function中的程序代码如下:
——————————————————————————————————————
出错的代码:
function DP=fcn(Type,Type1,Type2,Type3)
%#codegen
switch Type
r> case 1
DP=Type1;
case 2
DP=Type2;
% otherwise

case 3
DP=Type3;
end
——————————————————————————————————————
若用以上代码,那么在运行Simulink中会出现如下的错误类型:
Component: MATLAB Function | Category: Coder error
——————————————————————————————————————
正确的代码:
function DP=fcn(Type,Type1,Type2,Type3)
%#codegen
switch Type
case 1
DP=Type1;
case 2
DP=Type2;
% otherwise

case 3
DP=Type3;
end
——————————————————————————————————————
若在普通的脚本文件中运行,两者的功能是相同的。但是为什么在Matlab Function中会有这么大的区别呢。通过对比2段代码,正确的代码的语句结构较为完整为:switch-case-otherwise-end,而出错的代码语句结构为:switch-case-end。由此我们可以得出Matlab Function对语法的要求较为严格,当使用错误的代码时,在没有适合的case时,DP没有输出,存在一定的隐患。 Matlab Function模块要进行代码生成,所以语法要求比一般的MATALB程序严格,因此在Matlab Function中必须要保持语句的完整性。

我的更多文章

下载客户端阅读体验更佳

APP专享