<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/264216</link>
    <title>MATLAB Central Newsreader - s-function, parameter</title>
    <description>Feed for thread: s-function, parameter</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Tue, 27 Oct 2009 11:24:03 -0400</pubDate>
      <title>s-function, parameter</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/264216#690003</link>
      <author>sdfs sfdf</author>
      <description>Hello,&lt;br&gt;
&lt;br&gt;
i have an s-function to which the parameter &quot;L&quot; is handed over. The beginning of the s-function looks like this :&lt;br&gt;
Code:&lt;br&gt;
function [sys,x0,str,ts] = Kinetik_aerob(t,x,u,flag,V_l,c_X_0,A,L)&lt;br&gt;
&amp;nbsp;&lt;br&gt;
switch flag,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;case 0,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[sys,x0,str,ts]=mdlInitializeSizes(V_l,c_X_0,A,L);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;case 3,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sys=mdlOutputs(t,x,u,V_l,c_X_0,A,L);  &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;case {1, 2, 4, 9},% unexpected flags&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;otherwise&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error(['Unhandled flag = ',num2str(flag)]);&lt;br&gt;
&amp;nbsp;&lt;br&gt;
end&lt;br&gt;
%&lt;br&gt;
function [sys,x0,str,ts]=mdlInitializeSizes(V_l,c_X_0,A,L)&lt;br&gt;
&amp;nbsp;&lt;br&gt;
sizes = simsizes;&lt;br&gt;
&amp;nbsp;&lt;br&gt;
sizes.NumContStates  = 0;   &lt;br&gt;
sizes.NumDiscStates  = 0;  &lt;br&gt;
sizes.NumOutputs     = 7; &lt;br&gt;
sizes.NumInputs      = 6; &lt;br&gt;
sizes.DirFeedthrough = 1; &lt;br&gt;
sizes.NumSampleTimes = 1;   &lt;br&gt;
&amp;nbsp;&lt;br&gt;
sys = simsizes(sizes);&lt;br&gt;
%&lt;br&gt;
x0  = [];&lt;br&gt;
str = [];&lt;br&gt;
ts  = [0 0];&lt;br&gt;
%&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
function sys=mdlOutputs(t,x,u,V_l,c_X_0,A,L)&lt;br&gt;
&amp;nbsp;&lt;br&gt;
%Einlesen&lt;br&gt;
c_X       = u(1);     %[g/l] Biomassekonzentration&lt;br&gt;
PFD       = u(2);     %[?E/m?s] PFD(PAR)&lt;br&gt;
E         = u(3);     %[MJ]&lt;br&gt;
Ab        = u(4);     %[g/l]&lt;br&gt;
Temp      = u(5);     %[?K]&lt;br&gt;
Gh        = u(6);     %[W/m^2]&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
%Now the part with which i have problems. The if-else-construction:&lt;br&gt;
if L==1&lt;br&gt;
PFD     = PFD*(  (-0.9184 * c_X) / (0.1447 + c_X) + 1.002 );&lt;br&gt;
&lt;br&gt;
elseif L==3&lt;br&gt;
PFD     = PFD*	( (-0.9714 * c_X) / (0.04037 + c_X) + 1 );   &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
It seems as if the s-function cannot handle this if-construction or the if-construction doesn't recognize the parameter &quot;L&quot;. If i calculate &quot;PFD&quot; without the if-construction it works. What is wrong? Please help me ;-)&lt;br&gt;
&lt;br&gt;
Thank you&lt;br&gt;
bye</description>
    </item>
    <item>
      <pubDate>Tue, 27 Oct 2009 15:04:04 -0400</pubDate>
      <title>Re: s-function, parameter</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/264216#690070</link>
      <author>sdfs sfdf</author>
      <description>Sorry, i forgot the &quot;end&quot; after the if-else-construction. But this is not the problem. It doesn't work anyway&lt;br&gt;
&lt;br&gt;
&quot;sdfs sfdf&quot; &amp;lt;ofeus18@yahoo.de&amp;gt; wrote in message &amp;lt;hc6l8j$4k0$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Hello,&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; i have an s-function to which the parameter &quot;L&quot; is handed over. The beginning of the s-function looks like this :&lt;br&gt;
&amp;gt; Code:&lt;br&gt;
&amp;gt; function [sys,x0,str,ts] = Kinetik_aerob(t,x,u,flag,V_l,c_X_0,A,L)&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; switch flag,&lt;br&gt;
&amp;gt;    &lt;br&gt;
&amp;gt;   case 0,&lt;br&gt;
&amp;gt;      [sys,x0,str,ts]=mdlInitializeSizes(V_l,c_X_0,A,L);&lt;br&gt;
&amp;gt;      &lt;br&gt;
&amp;gt;   case 3,&lt;br&gt;
&amp;gt;      sys=mdlOutputs(t,x,u,V_l,c_X_0,A,L);  &lt;br&gt;
&amp;gt;    &lt;br&gt;
&amp;gt;   case {1, 2, 4, 9},% unexpected flags&lt;br&gt;
&amp;gt;      &lt;br&gt;
&amp;gt;   otherwise&lt;br&gt;
&amp;gt;     error(['Unhandled flag = ',num2str(flag)]);&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt; %&lt;br&gt;
&amp;gt; function [sys,x0,str,ts]=mdlInitializeSizes(V_l,c_X_0,A,L)&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; sizes = simsizes;&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; sizes.NumContStates  = 0;   &lt;br&gt;
&amp;gt; sizes.NumDiscStates  = 0;  &lt;br&gt;
&amp;gt; sizes.NumOutputs     = 7; &lt;br&gt;
&amp;gt; sizes.NumInputs      = 6; &lt;br&gt;
&amp;gt; sizes.DirFeedthrough = 1; &lt;br&gt;
&amp;gt; sizes.NumSampleTimes = 1;   &lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; sys = simsizes(sizes);&lt;br&gt;
&amp;gt; %&lt;br&gt;
&amp;gt; x0  = [];&lt;br&gt;
&amp;gt; str = [];&lt;br&gt;
&amp;gt; ts  = [0 0];&lt;br&gt;
&amp;gt; %&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; function sys=mdlOutputs(t,x,u,V_l,c_X_0,A,L)&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; %Einlesen&lt;br&gt;
&amp;gt; c_X       = u(1);     %[g/l] Biomassekonzentration&lt;br&gt;
&amp;gt; PFD       = u(2);     %[?E/m?s] PFD(PAR)&lt;br&gt;
&amp;gt; E         = u(3);     %[MJ]&lt;br&gt;
&amp;gt; Ab        = u(4);     %[g/l]&lt;br&gt;
&amp;gt; Temp      = u(5);     %[?K]&lt;br&gt;
&amp;gt; Gh        = u(6);     %[W/m^2]&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; %Now the part with which i have problems. The if-else-construction:&lt;br&gt;
&amp;gt; if L==1&lt;br&gt;
&amp;gt; PFD     = PFD*(  (-0.9184 * c_X) / (0.1447 + c_X) + 1.002 );&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; elseif L==3&lt;br&gt;
&amp;gt; PFD     = PFD*	( (-0.9714 * c_X) / (0.04037 + c_X) + 1 );   &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; It seems as if the s-function cannot handle this if-construction or the if-construction doesn't recognize the parameter &quot;L&quot;. If i calculate &quot;PFD&quot; without the if-construction it works. What is wrong? Please help me ;-)&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Thank you&lt;br&gt;
&amp;gt; bye</description>
    </item>
    <item>
      <pubDate>Tue, 27 Oct 2009 20:12:22 -0400</pubDate>
      <title>Re: s-function, parameter</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/264216#690121</link>
      <author>Phil Goddard</author>
      <description>&lt;br&gt;
You need to be more precise in describing what you mean by&lt;br&gt;
&amp;gt; It seems as if the s-function cannot handle this if-construction or the if-construction doesn't recognize the parameter &quot;L&quot;. If i calculate &quot;PFD&quot; without the if-construction it works. What is wrong? Please help me ;-)&lt;br&gt;
&lt;br&gt;
Is it erroring out?&lt;br&gt;
If so what is the error message?&lt;br&gt;
&lt;br&gt;
Or are you not calculating PFD even if you are _seemingly_ inputting L=1 or L=3?&lt;br&gt;
In which case you should look at Section 6.1 of the FAQ:&lt;br&gt;
&lt;a href=&quot;http://matlabwiki.mathworks.com/MATLAB_FAQ&quot;&gt;http://matlabwiki.mathworks.com/MATLAB_FAQ&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Or is it something else?&lt;br&gt;
&lt;br&gt;
Phil.</description>
    </item>
  </channel>
</rss>

