调用函数:result =dist(ax, ay, bx, by);
输出结果:fprintf('笛卡尔坐标系中两点之间的距离是:%f\n',result);
脚本文件: test_dist.m
目标: 实际调用自定义函数dist
定义变量:
a1:位置a的x坐标
b2:位置b的y坐标
a1:位置a的x坐标
b2:位置b的y坐标
获取输入数据
disp('计算笛卡尔坐标系中两点之间的距离');
ax =input ('输入位置a的x坐标: ');
ay =input ('输入位置a的y坐标: ');
bx =input ('输入位置b的x坐标: ');
by =input ('输入位置b的y坐标: ');
自定义函数代码
function distance = dist(x1, y1, x2, y2) %写在首行
自定义函数脚本文件:dist.m
函数功能:该函数用来计算笛卡尔坐标系中两点之间的距离,两个点的坐标通过形参输入(4)
学习H1注释行的使用,及函数的调用
DIST函数:计算计算笛卡尔坐标系中两点之间的距离
应用示例:res =dist(x1, y1, x2, y2)
定义变量:
x1:位置1的x坐标
y2:位置2的y坐标
x1:位置1的x坐标
y2:位置2的y坐标
计算距离:distance = sqrt((x2-x1).^2 + (y2-y1).^2);
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只能被主函数和主函数中的其他子函数调用。
把它们全放在同一路径下,然后使用函数名来调用(有参数的加参数),记住:调用时保持与原有函数的形式一致(名字可以不同)。
比如,我希望定义一个求和的程序,f(x,y)=x+y. 那么,首先,新建一个m文件,在m文件中写下如下程序:
function x=sums(a,b)
x=a+b;
end
将该文件保存为test.m。
那么在command主窗口可以对上述函数进行调用。
x=test(1,2); !!!!!!!!!这里不能写成x=sums(1,2);
结果会显示3.
即调用的是m文件名,而不是m文件中的函数名!当然,二者可以相同。
你可以自己试一试,亲身体会一下。
直接函数名调用。函数源文件放在 工作路径下,函数名称不能和matlab已有的重复。