MATLAB Answers

which simulink blocks can I use to create the function below ??

22 views (last 30 days)
kamal kiki
kamal kiki on 20 Feb 2012
Commented: JOE JOY on 2 Feb 2016
Please which simulink blocks can I use to create the function below ?
fsolve(@(XY)anothertrial(xy,A,B,P1,P2),XY0)
Where A,B, P1 and P2 are variables that will be provided by the results of calculations in other blocks, and XY0 is the value of the guess for the function fsolve.

  0 Comments

Sign in to comment.

Accepted Answer

Kaustubha Govind
Kaustubha Govind on 22 Feb 2012
Function handles were not supported in Embedded MATLAB Function blocks until fairly recently, additionally, fsolve is not amongst the functions supported for code-generation, which are the only functions that can be used directly in a Embedded MATLAB Function block.
The easiest way to do this might be to use an (Interpreted) MATLAB Function block and enter this in the dialog:
fsolve(@(xy)anothertrial(xy,u(1),u(2),u(3),u(4)),xy0)
You can either create the guess xy0 as a workspace variable, or if it is a constant, enter the value directly. Additionally, concatenate your inputs A,B,P1,P2 into a single input using a Mux or Concatenate block, because the Interpreted MATLAB Function block accepts only one input.

  11 Comments

Show 8 older comments
Kaustubha Govind
Kaustubha Govind on 7 May 2013
Huan: Your question is getting rather long for a comments discussion. Can you start a new question please? Thanks!
JOE JOY
JOE JOY on 2 Feb 2016
How to concatenate inputs if they are all vectors ? Can we still access those vectors as u(1), u(2), u(3) ?

Sign in to comment.

More Answers (2)

grapevine
grapevine on 20 Feb 2012
You can use either the block Matlab fcn in the "user-defined function" library either a sfunction.
I suggest you to use the first one, in this way you just need to write your function inside a m file and put it as argument of the block
for further details take a look to the doc http://www.mathworks.nl/help/toolbox/simulink/ug/f6-106261.html

  7 Comments

Show 4 older comments
kamal kiki
kamal kiki on 22 Feb 2012
In the embedded MATLAB Editor of the block "Embedded MATLAB Function" I wrote the following code:
function XY = lost(A,B,P1,P2,xy0)
XY = fsolve(@(xy)anothertrial(xy,A,B,P1,P2),xy0)
and after adding constants blocks and giving them the values of A,B,P1,P2 and xyo and connecting them to the block of "Embedded MATLAB Function" I ran the simulation and I received the following error message:
This kind of expression is not supported.
Function 'Embedded MATLAB Function' (#31.47.78), line 2, column 13:
"@(xy)anothertrial(xy,A,B,P1,P2)"
Is there any solution for this ?????
grapevine
grapevine on 23 Feb 2012
u should not use the embedded matlab function 'cause it limited u should use the MATLAB Function block as I told u
u have to change the name of the associated Matlab function, for default it's sin u have to write the name of your mfile where you wrote your function
good luck
kamal kiki
kamal kiki on 23 Feb 2012
Yes, It is working !!!!!
Thank you grapevine for your support during these last days.
I am really new in Simulink and Matlab but thanks to friends like you I am doing good progress in my project.
Thanks a million !!!!!.

Sign in to comment.


rupa
rupa on 21 May 2013
i am trying to generate PWM by watching the video from youtube, i am unable to use fcn block as they have used in the video , i am getting an error stating Warning: Using a default value of 0.2 for maximum step size. The simulation step size will be equal to or less than this value. You can disable this diagnostic by setting 'Automatic solver parameter selection' diagnostic to 'none' in the Diagnostics page of the configuration parameters dialog .
please some1 help me solving this .
Best regards,

  1 Comment

Kaustubha Govind
Kaustubha Govind on 21 May 2013
This warning has nothing to do with the Fcn block, it is simply complaining that you have not set a "maximum step size" in the Configuration Parameters window's Solver pane. If you'd like to ignore the warning, you can disable it by following the directions in the warning message.
(Btw, this is a warning, not an error, so you should still be able to simulate and obtain your result)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by