Matlab自定义函数的五种方法 [转]

摘要:
子函数lfg2只能被主函数和主函数中的其他子函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。

n1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件;

n2、函数文件+子函数:定义一个具有多个自定义函数的M文件;

n3Inline:无需M文件,直接定义;

n4Syms+subs:无需M文件,直接定义;

n5、字符串+subs:无需M文件,直接定义.

1、函数文件+调用函数文件:定义多个M文件:

%调用函数文件:myfile.m

clear

clc

for t=1:10

y=mylfg(t);

fprintf(‘%4d^(1/3)=%6.4f\n’,t,y);

end

%自定义函数文件: mylfg.m

function y=mylfg(x)%注意:函数名(mylfg)必须与文件名(mylfg.m)一致

Y=x^(1/3);

注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。

2、函数文件+子函数:定义一个具有多个子函数的M文件

%命令文件:funtry2.m

function []=funtry2()

for t=1:10

y=lfg2(t)

fprintf(‘%4d^(1/3)=%6.4f\n’);

End

function y=lfg2(x)

Y= x^(1/3);

%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。

3Inline:无需M文件,直接定义;

%inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)

调用方式:y=f(数值列表)%注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。

例如:

f=inline(‘x^2+y’,’x’,’y’);

z=f(2,3)

Ans=7

注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算

例:

Clear

Clc

f=’x^2’;

Syms x g;

g=x^2;

h=inline(‘x^2’,’x’);

4Syms+subs:无需M文件,直接定义;

syms定义一个符号表达式,用subs调用:

Syms f x%定义符号

f=1/(1+x^2);%定义符号表达式

subs(f, ‘x’,代替x的数值或符号)

注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。

这种函数定义方法的特点是,可以用符号进行替换

Syms f x

f=1/(1+x^2);

subs(f, ‘x’,’y^2’)

ans=

1/(1+(y^2)^2)

注:该方法的缺点是,由于使用符号运算内核,运算速度会大大降低。

5、字符串+subs:无需M文件,直接定义.

直接定义一个字符串,用subs命令调用。例如:

f=’1/(1+x^2)’%定义字符串

z=subs(f,’x’,2)

g=subs(f,’x’,’y^2’)

注:优点是,占用内存最少,定义格式方面自由。

缺点是,无法对字符进行符号转化。

当所要替代的符号在调用前都已经有了数值定义,则可以直接调用subs(f).例如:

f=’x^2*y’;

x=2;y=3;

subs(f)

ans=12

[转]http://apps.hi.baidu.com/share/detail/23406825

免责声明:文章转载自《Matlab自定义函数的五种方法 [转]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇electron用默认浏览器打开链接的3种实现方式数据库软考易混淆知识之信息化基础、项目管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VC中使用Matlab Engine出现"无法找到libeng.dll"的问题

VC中使用Matlab Engine出现"无法找到libeng.dll"的问题 本以为使这个原因 ,其实不是我2了 #include "engine.h" //终于知道为什吗老是找不到那个库文件--是因为添加的头文件是以引号括起来的啊 //#include <engine.h> 不是因为环境变量没有生效的缘故 其实目前来说应该是这个问题no c...

Matlab画图中图的方法

大家画图时可能会发现,有些地方太小了,看不清楚!但是这个小的部分,恰恰是我们需要强调的地方!怎么办?如何放大!其实matlab中的magnify函数可以解决我们这个问题。 第一步首先百度文库:magnify matlab源程序;找到对应的代码。   找到代码之后,我们将里面的源程序代码,复制到matlab新建的m文件。注意文件名为:magnif...

Simscape Multibody 教程 —— 入门学习

转载请注明出处,谢谢原创作者:MingruiYU原创链接:https://www.cnblogs.com/MingruiYu/p/12305851.html 本文要点: Simscape Multibody 简介 Simscape Multibody 入门学习的推荐学习材料和学习顺序 建模仿真过程中的重要知识 模型的参数设置(Model Worksp...

Android指针管理:RefBase,SP,WP (二)

(1)在Android中,RefBase结合了sp和wp,实现了一套通过引用计数的方法来控制对象声明周期的方法。 RefBase的定义在/frameworks/base/include/utils/RefBase.h,实现在/frameworks/base/libs/utils/RefBase.cpp。wp的定义在/frameworks/base/incl...

[转载]Matlab有用的小工具小技巧

原文地址:Matlab有用的小工具小技巧作者:felonwan 本文随时更新,欢迎转载,注明出处,谢谢合作。 本文内容基本上都经过笔者自身使用,结合经验及思考使用Matlab作图更为方便。记录下来,一是方便自己,二也为方便网友,欢迎多留言交流。 目录: 1.使图形窗口的默认text解释器为latex 2.图形窗口最大化 3.双坐标 4.计时...

2.1.1优化程序性能

性能优化有三个层次: 系统层次 算法层次 代码层次 系统层次关注系统的控制流程和数据流程,优化主要考虑如何减少消息传递的个数;如何使系统的负载更加均衡;如何充分利用硬件的性能和设施;如何减少系统额外开销(比如上下文切换等)。 算法层次关注算法的选择(用更高效的算法替换现有算法,而不改变其接口);现有算法的优化(时间和空间的优化);并发和锁的优化(增加任务的...