Why I get "Fcn Block has a syntax error"?

조회 수: 15 (최근 30일)
Bob
Bob 2016년 3월 7일
편집: Bob 2016년 3월 18일

채택된 답변

Walter Roberson
Walter Roberson 2016년 3월 7일
편집: Walter Roberson 2016년 3월 7일
I do not see anything obvious. You could try retyping it again without any spaces just in case there is an extra blank that I am overlooking. I suspect that will not help.
However, you appear to be using an Interpreted MATLAB Block. Interpreted MATLAB Blocks can only have a single input, and so only a single variable name. There does not appear to be any way for the code to know where to retrieve a0, af, bf, n, or p. If you want to use multiple inputs, even if the inputs are constants, then you need to use a MATLAB Function Block (formerly known as an Embedded Function Block).
There is a possibility that you might be able to code something like
evalin('base', 'a0') + evalin('base', 'af') .* cos(evalin('base', n') * ..... etc
I do not know if it would be able to recognize that code or not. If it did, then the constants would have to be in the base workspace similar to if you had been using a From Workspace block.
My guess is that Interpreted MATLAB Blocks can only refer to one variable in their code.
  댓글 수: 5
Bob
Bob 2016년 3월 7일
In conclusion, can I just write the function inside the Matlab Function Block like this?
function y = fcn(u)
y = 1 + sum ( [1 2 3 4 5 6 7 8] .* cos([1 2 3 4 5 6 7 8] .* 20 * u) + [1 2 3 4 5 6 7 8] .* sin([1 2 3 4 5 6 7 8] .* 20 * u) );
end
Instead of this:
function y = fcn(u)
y = a0 + sum( af .* cos(n * zp * u) + bf .* sin(n * zp * u) );
end
Because I am getting error If I don't.
I will still get the same result, won't I?
The only problem is that If I want to change the numbers I will have to open the Simulink and go to Matlab Function Block to change them, right?
One last thing, why I am getting this file "slprj" when I run my simulink model? I noticed that I get this file when I am using the Matlab Function Block?
Walter Roberson
Walter Roberson 2016년 3월 7일
To bring in values for a0, af and so on for a MATLAB Function Block, add input ports to the block and bring in the values from somewhere appropriate. Perhaps from a Constant Block.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

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