How to use 'Switch case' with Matlab Function Block in Simulink?

10 次查看(过去 30 天)
I'm able to run the following code in MATLAB:
n = input('n: ');
x = 3;
y = 2;
switch n
case 1
z = (x-y)/2
case 2
z = (x+y)/2
end
I want the 'n' value to come from a constant (or any other input block), which goes to MATLAB Function Block, and display the output when I simulate the Simulink model. Something like this:
I edited the Function Block's code as follows:
function result = fcn(n)
%#codegen
x = 3;
y = 2;
switch n
case 1
z = (x-y)/2
case 2
z = (x+y)/2
end
Its giving me several errors:
Can someone tell me what is wrong with my code or any other fixes to make this thing work?
Thanking You, Harshil

回答(3 个)

Azzi Abdelmalek
Azzi Abdelmalek 2015-6-26
What if n is different from 1 and 2? Try this
function result = fcn(n)
%#codegen
x = 3;
y = 2;
z=0;
switch n
case 1
z = (x-y)/2
case 2
z = (x+y)/2
end
  3 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2015-6-26
I tested this code, it works fine. Post your real code, we can't find the problem with another code.
Harshil Patel
Harshil Patel 2015-6-28
Mr. Azzi, The real code just has more variables and multiple outputs within the 'cases'. So I simplified the problem for myself to see if it works or not. Still no improvement. I tried the exact code which you posted but Simulink did not give me an output, just errors. Do I need any additional compiler? (I already have the SDK, which lets me use and simulate Matlab function blocks for general purposes). I just want the function block to take the value 1 or 2 from a 'constant' block, and display the output '0.5' or '2.5' (depending on the case) in a 'display' block, when I simulate the model in Simulink.
Thanking you, Harshil

请先登录,再进行评论。


Anjum Tamboli
Anjum Tamboli 2017-11-30
</matlabcentral/answers/uploaded_files/96734/Screenshot%20(29).png>This code does not work. for first range of values output should be only at y and for second range ouput should be at y1. please suggest me the modifications to run the program successfully. Thanks and Regards Anjum

cqut
cqut 2018-5-2
编辑:cqut 2018-5-2
you missed otherwise + statement,you can try this:
function result = fcn(n)
%#codegen
x = 3;
y = 2;
switch n
case 1
z = (x-y)/2
case 2
z = (x+y)/2
otherwise
z = ??
end

类别

Help CenterFile Exchange 中查找有关 Simulink Functions 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by