function函数中定义变量。

function [r_w_m,v_w_a] = fcn(delt_P)
g=9.8;
r_t=1*10^-3;
R_t=4.1*10^-3;
N=4;
r_0=3.85*10^-3;
r_s=5.1*10^-3;
L_s=10.2*10^-3;
L_b=2.75*10^-3;
L_0=35*10^-3;
rho=814;
miu=1.9*10^-3;
v_t=20;
pi=3.14;
A_s=N*pi*r_t^2;%%入口面面积
dm=N*rho*pi*r_t^2*v_t;%%质量流量
H=r_s^2*L_s+1/3*L_b*(r_s^2+r_0^2+r_0*r_s)+r_0^2*L_0;%%结构参数
fprintf(' %d\n %d\n %d\n',A_s,dm,H);
syms delt_P r_wm v_wa
eq1=dm^4*R_t^2/(N^2*rho^2*A_s^2)-v_wa^2*r_0/(r_0-r_wm)*(dm^2*r_wm+4*pi^2*miu^2*H^2/(r_0-r_wm)^2+4*pi*miu*dm*H/(r_wm*(r_0-r_wm)));
eq2=v_wa^2-2*(g*(L_s+L_b+L_0)+delt_P/rho)+v_t^2-dm^2/(rho^2*pi^2*(r_0^2-r_wm^2)^2);
[r_wm,v_wa]=solve(eq1,eq2,r_wm,v_wa);
r_w_m=subs(r_wm,delt_P);
v_w_a=subs(v_wa,delt_P);
end
在simulink的fch模块中运行时显示未定义变量,在m.文件中可以正常运行,求教

 Accepted Answer

tiniyin
tiniyin on 26 Nov 2022

0 votes

1. syms和solve在matlab Fcn中用不了
2. 如果非要用,就现在外面定义m文件,使其可以正常运行,假设m文件名为AAAA.m,然后在simulink的模块matlab fcn中调用AAAA.m文件,调用格式为coder.extrinsic('AAAA');
详细参考:https://cn.mathworks.com/matlabcentral/answers/154695-how-to-use-symbolic-variables-and-functions-syms-in-a-simulink-matlab-function#answer_152972
3. 我用matlab运行你的m文件没有求出结果,提示“警告: Cannot find explicit solution. ”
r_wm =
Empty sym: 0-by-1
如果你在m文件中可以求解出真实值,可以按照2中描述运行

More Answers (0)

Tags

Asked:

on 26 Nov 2022

Answered:

on 26 Nov 2022

Community Treasure Hunt

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

Start Hunting!