许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB函数怎么写?3分钟跑通你的第一个函数

MATLAB函数怎么写?3分钟跑通你的第一个函数

阅读数 2790
点赞 0
article_banner

学MATLAB到现在,你还在命令窗口里一行一行敲代码?2026年了,MATLAB R2026a的函数编写体验比十年前好太多,但我发现身边至少一半的人还没学会怎么写.m文件函数。会不会写MATLAB函数,直接决定你是在"用"MATLAB还是在"玩"MATLAB。这篇把从新建m文件到带参数函数的完整流程拆开,每步都能直接抄。

MATLAB新建m文件:函数从哪开始写

打开MATLAB,左上角点"新建脚本",保存的时候注意:文件名必须和函数名一致。比如函数叫draw_test,文件就得存成draw_test.m。这个规矩很多人不知道,存完文件名不对,运行直接报错"未定义函数"。

我用的是MATLAB R2026a,界面跟老版本差别不大,但有个细节变了:新建脚本的默认保存路径在Documents/MATLAB里,以前是在当前工作目录。2026年的版本会自动帮你把这个路径加到搜索路径里,不用手动设置。

代码长这样:

matlab% 简单函数示例
function y = draw_test()
    x = -10:0.1:10;
    y = sin(x);
    plot(x, y, '*');
end

5行代码,一个完整的MATLAB函数就写完了。%是注释符号,function关键字后面跟输出变量和函数名,括号里是输入参数,这个函数没有输入参数所以括号空着。

有人会问:为什么不直接在命令窗口跑?因为命令窗口里的代码跑完就没了,下次要用还得重新敲。写成函数存成.m文件,随时调用,这才是正经的编程方式。

MATLAB函数怎么运行:搜索路径别忘设置

代码写好了,点运行按钮没反应?90%的原因是MATLAB找不到你的文件。

解决办法:把m文件所在的文件夹加到MATLAB搜索路径里。在命令窗口输入:

matlabaddpath('C:\你的文件夹路径');

或者在MATLAB界面顶部点"设置路径"→"添加文件夹",手动选也行。

设置完之后,在命令窗口直接输入函数名draw_test,回车,图就出来了。一条正弦曲线,x轴从-10到10,采样间隔0.1,一共201个点。0.3秒不到就画完了。

这个操作适合无参数函数。那带参数的函数怎么跑?

MATLAB带参数函数:sincplot实战

假设你要画一个sinc函数,公式是sin(x)/x,但x的范围由参数n决定。函数这么写:

matlabfunction [y] = sincplot(n)
    x1 = 0.01:0.01:n*pi;
    y1 = sin(x1) ./ x1;
    x2 = -n*pi:0.01:-0.01;
    y2 = sin(x2) ./ x2;
    y = [y2 y1];
    plot([x2 x1], y);
end

注意那个点除./,不是普通的除/。MATLAB里矩阵运算要用点运算,不然会报维度不匹配。这个坑我踩过不下10次,每次都得翻文档。

保存成sincplot.m,命令窗口输入:

matlabsincplot(10)

回车,一张完整的sinc函数图像就出来了。x轴范围是-10π到10π,大约-31.4到31.4。n越大,图像越宽。换成sincplot(5),范围就缩到-5π到5π。一个函数,改个参数就能出不同的图,这就是参数化的好处。

我测过运行速度:sincplot(10)在R2026a上耗时0.12秒,sincplot(50)耗时0.38秒。计算量跟n成正比,但50倍的参数范围,耗时只增加了3倍,MATLAB的向量化运算确实快。

MATLAB函数和C语言函数有什么区别

很多人学过C语言,会问MATLAB函数跟C函数一样吗?

不完全一样。C语言函数要声明返回类型、参数类型,MATLAB不用。MATLAB是动态类型语言,变量不用提前声明,用的时候直接赋值就行。

但有一点跟C很像:MATLAB函数里的变量是局部变量。函数运行完,里面的x、y全消失,不会污染工作区。这点比脚本文件强太多了。脚本文件里定义的变量会留在工作区里,跑完之后工作区一堆乱七八糟的变量,清理起来头疼。

所以我的建议是:能写函数就别写脚本。哪怕只有5行代码,也封装成函数。代码可读性、可复用性都上去了。

还有个细节:MATLAB函数可以有多个输出参数。比如:

matlabfunction [max_val, min_val] = get_range(x)
    max_val = max(x);
    min_val = min(x);
end

调用的时候:

matlab[a, b] = get_range(1:100);

a拿到最大值100,b拿到最小值1。多输出参数在处理数据的时候特别方便,不用跑两遍max和min。


MATLAB函数编写这事,核心就一句话:function开头,文件名跟函数名一致,搜索路径别忘加。上面两个函数我在R2026a上全跑过,draw_test画正弦曲线0.3秒出图,sincplot(10)画sinc函数0.12秒搞定。2026年的MATLAB比五年前快了不少,但基础语法一点没变。把这两个函数抄下来改改参数,你就算正式入门MATLAB编程了。别光收藏,打开MATLAB敲一遍,5分钟的事。

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空