hey guys I'm trying to do an if statement inside an embedded matlab function in simulink, but it is not working, I don't know why.------------------------------------------------This is the matlab function function [Wv_membr,lambda_m] = fcn(Ist,T_st,phi_ca,phi_an)Mv=18.02E-3;n=381;Afc=280;F=96485;tm=0.01275;%phi_an=0.5;
%phi_ca=0.80;
am=(phi_ca+phi_an)/2;if (am>0) && (am<=1) lambda_m=0.043+17.81*am-39.85*am^2+36*am^3;elseif (am>1) && (am<3) lambda_m=14+1.4*(am-1);endi=Ist/Afc;if (lambda_m<2) Dy=1E-6;elseif (lambda_m>=2) && (lambda_m<=3) Dy=1E-6*(1+2*(lambda_m-2));elseif (lambda_m>3) && (lambda_m<4.5) Dy=1E-6*(3-1.67*(lambda_m-3));elseif (lambda_m>=4.5) Dy=1.25E-6;endif (phi_an>0) && (phi_an<=1) lambda_an=0.043+17.81*phi_an-39.85*phi_an^2+36*phi_an^3;elseif (phi_an>1) && (phi_an<3) lambda_an=14+1.4*(phi_an-1);endif (phi_ca>0) && (phi_ca<=1) lambda_ca=0.043+17.81*phi_ca-39.85*phi_ca^2+36*phi_ca^3;elseif (phi_ca>1) && (phi_ca<3) lambda_ca=14+1.4*(phi_ca-1);endpm_dry=0.002;Mm_dry=1.1;cv_an=pm_dry/Mm_dry * lambda_an;cv_ca=pm_dry/Mm_dry * lambda_ca;Dw=Dy*exp(2416*(1/303-1/T_st));nd=0.0029*lambda_m^2+0.05*lambda_m-3.4E-19;Nv_membr=nd*i/F * Dw*(cv_ca-cv_an)/tm;Wv_membr=Nv_membr*Mv*Afc*n;end---------------------------------------------------when I run it, it says that lamda_m is not a defined variable, but this is impossible. It is very weird to me. I wonder for some help.
MATLAB: If statement
if
Best Answer