matlab中的m文件是可以在文件外调用的,如y=myfun(x)是个个函数,可这样调用:
x=[......];
y=myfun(x)
如果要调用m文件中的函数,则只能在该m文件内,不能在外部调用,这种函数叫子函数。如:function y=myfun(x)
a=[....];
y=myfunfun(a)
function f=myfunfun(a)
f=a^2+1;
end
end
这个文件中的myfunfun函数只能在这个函数内使用,不能在外部调用。
我举个例子:
新建m文件
function [f,sf] = T2F(t,st)
%dt = t(2) - t(1);
T = t(end);
df = 1/T;
N = length(st);
f = -N/2*df:1/1:N/2*df-df;
sf = fft(st);
sf = T/N*fftshift(sf);
保存这个子函数文件名为T2F.m
然后在同一个目录下另外创建主函数
clear all
close all
t=-1:0.001:1;
y=sinc(2*pi*t);
figure(1);
plot(t,y)
[f,Y]=T2F(t,y);%这里就是调用刚才的子函数
figure(2);
plot(f,abs(Y))
axis([-20 20 -0.1 0.1]);
该程序在第8行调用了子函数;
还有另外一种方法把子函数和主函数写在同一个m文件里,这个只要求子函数在主函数之前就可以。
希望对你有所帮助。
将两个m文件放在同一目录,在第一个m文件里面直接输入第二个m文件的函数名称即可 。
[输出1,输出2,..]=函数名称(变量1,变量2,...)。
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
n 1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件;
n 2、函数文件+子函数:定义一个具有多个自定义函数的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只能被主函数和主函数中的其他子函数调用。