Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中使用符号表达式创建函数?

如何从符号表达式中创建函数?例如,我有以下内容:

syms beta n1,n2,m,aa= Constants u = sqrt(n2-beta^2); w = sqrt(beta^2-n1); a = tan(u)/w+tanh(w)/u; b = tanh(u)/w; f = (a+b)*cos(aa*u+m*pi)+ab*sin(aa*u+m*pi); %# The main expression 如果要在特殊程序中使用f来查找其零,如何将f转换为函数?或者,我应该怎么做才能找到f和此类嵌套表达式的零?



回答:

您有几种选择...

选项1:自动生成函数

如果您使用的是4.9版(R2007b +)或更高版本Symbolic Toolbox ,则可以使用matlabFunction函数将符号表达式转换为匿名函数或函数M文件。文档中的示例:

>> syms xy >> r = sqrt(x^2 + y^2); >> ht = matlabFunction(sin(r)/r) ht = @(x,y)sin(sqrt(x.^2+y.^2)).*1./sqrt(x.^2+y.^2) 选项2:手动生成函数

由于您已经编写了一组符号方程式,因此只需将部分代码剪切并粘贴到函数中即可。这是您上面的示例所示:

function output = f(beta,n1,n2,m,aa) u = sqrt(n2-beta.^2); w = sqrt(beta.^2-n1); a = tan(u)./w+tanh(w)./u; b = tanh(u)./w; output = (a+b).*cos(aa.*u+m.*pi)+(ab).*sin(aa.*u+m.*pi); end 调用此函数f您必须输入beta值和4个常量,它将返回评估主表达式的结果。

注意:由于您还提到要查找f零,因此可以尝试在符号方程式上使用SOLVE函数:

zeroValues = solve(f,'beta');

更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 00:34


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.