新浪博客

matlab function的用法

2014-04-25 09:33阅读:

matlab function的用法

2011-07-10 16:34:54| 分类: matlab|举报|字号 订阅
1.函数句柄(Function handle)
函数句柄(Function handle)是MATLAB的一种数据类型。引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度,特别在反复调用情况下更显效率;提高软件重用性,扩大子函数和私用函数的可调用范围;迅速获得同名重载函数的位置、类型信息。
MATLAB中函数句柄的使用使得函数也可以成为输入变量,并且能很方便的调用,提高函数的可用性和独立性。例如:
新建M文件f1.m
function y=f1(X)
x1=X(1);x2=X(2);
y=x1^2+x1*x2;
新建M文件ftest.m
function Y=ftest(f,X)
syms x1 x2;
F=f([x1,x2]);
v=[x1,x2];
grad=jacobian(F,v);
Y=subs(grad,v,X);
在MATLAB命令窗口输入Y=ft
est(@f1,[2,1]),得到结果:
Y =
5 2
此处@f1即为函数f1的句柄,可以用class(@f1)判断变量的类型,得到ans = function_handle即函数句柄。函数ftest是求一个二维函数在指定点的梯度值。我们可以替换目标函数为f2或其他函数同样可以求得梯度。这样函数ftest就可以适用于任何二维函数而不必做改动了。
2. 例如 function b=sushu(n)会提示:如 function b=sushu(n)电脑就会提示:Function definitions are not permitted at the prompt or in scripts.


哦了 有点明白了 那必须要将M文件名命名为my_func?假如不用此命名的话,就无法调用了?
matlab function的用法 - 寒风 - 寒风的博客 模型.bmp
下载 (146.56 KB)
2008-10-11 22:01
matlab function:
function [y]=aa(x1,x2)
y=x1+x2
提示错误:Error in MATLAB Function block 'untitled/MATLAB Fcn' while evaluating expression: Undefined function or variable 'x1'
我理解x1和x2只是形参,只要matlab function模块中参数设置对就可以了,为什么会出现没有定义x1的提示

函数应该写成:
matlab function:
function [y]=aa(x)
y=x(1)+x(2);
这里x是输入的二维信号.如果是n维,那么可以用x(i) (i<=n)来访问第i个输入.

电脑告诉你,函数定义不允许在命令行或者脚本里。
所以你不能在命令行窗口中输入function b=sushu(n),而是要建立个m文件。
在命令行输入edit sushu 然后会弹出对话框问你是否创建m文件,确定之后打开m文件的编辑器。
在里面输入function b=sushu(n),然后后面可以写函数内容了。
function b=sushu(n)前面可以有注释,但不可以有其他命令,如果有其他命令,matlab就会认为这个m文件是个脚本文件,而不是函数文件。一样会出错的。
函数定义不能混杂在脚本文件中。
最后编辑好别忘了保存,保存的文件名可以和function定义的函数名相同也可以不同,不过在命令行调用函数的时候是按你保存的文件名调用的。
调用时在命令行写命令啊,跟系统函数一样的用法,比如y=sushu(x);或者b=min(sushu(a)); 类似于这样的,都可以,看你具体函数是什么了,需要什么样的参数。

3有关于function的用法
举个简单的例子吧:
function [x y]=my_func(a,b)
x=a+b;
y=a-b;
存为文件名为 my_func.m 的文件就行了。当然路径要在 Matlab 中指定好,才可调用。
调用如下:
[m n]=my_func(5,2)

我的更多文章

下载客户端阅读体验更佳

APP专享