总结matlab中函数定义的一些内容: 1, 函数定义格式 在matlab中应该做成M文件,文件名要和你文件里的function后面的函数名一致 
在File新建一个M-file 在M-file里编辑函数
    格式为:
            function [输出实参表]=函数名(输入实参数)
              注释部分
               函数体语句
               return语句(可以有可以没有)
 如果是文件中的子函数,则可以任意取名,也可以在同一个文件中定义多个子函数
  例: function [max,min]=mymainfun(x)
  %主函数 n=length(x);
      max=mysubfun1(x,n); 
    min=mysubfun2(x);
  function r=mysubfun1(x,n)
   %子函数1 
   x1=sort(x); r=x1(n);
    function r=mysubfun2(x)
  %子函数2 
  x1=sort(x);
   r=x1(1);
Matlab自定义函数的五种方法
 1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件;
  2、函数文件+子函数:定义一个具有多个自定义函数的M文件;
 3、Inline:无需M文件,直接定义;
 4、Syms+subs: 无需M文件,直接定义;
 5、字符串+subs:无需M文件,直接定义。
 
1、函数文件+调用函数文件:定义多个M文件:
% 调用函数文件:myfile.m
clear
clc
for t=1:10
y=mylfg(t);
fprintf(‘M^(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(‘M^(1/3)=%6.4f\n’);
End
function y=lfg2(x)
Y= x^(1/3);
%注:自定义函数文件funtry2。m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。
3、Inline:无需M文件,直接定义;
%inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2',……)。
调用方式:y=f(数值列表) %注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。
例如:
f=inline(‘x^2+y’,’x’,’y’);
z=f(2,3)
Ans=7matlab中fprintf是什么意思
注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算
例:
Clear
Clc
f=’x^2’;
Syms x g;
g=x^2;
h=inline(‘x^2’,'x');
4、Syms+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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。