装完MATLAB发现代码跑不起来,报错找不到子函数?这事儿太常见了。明明在“设置路径”里把文件夹加进去了,点完保存,一重启软件,路径又回到了解放前。2026年了,别再重装软件了,这多半是权限在捣鬼。
核心原因只有一个:pathdef.m 文件没写入权限。
当你点击“保存路径”时,MATLAB其实是试图把当前的搜索路径列表写入到安装目录下的 toolbox/local/pathdef.m文件里。如果你把MATLAB装在C盘(Program Files),Windows的UAC(用户账户控制)会阻止普通程序修改系统目录下的文件。结果就是,软件提示保存成功,实际上压根没写进去,下次启动自然还是读原来的旧文件。
网上那些改代码、输命令的方法太绕了,这两招最直接,我亲测过百试百灵。

这是治标的方法,适合不想重装软件的朋友。
找到MATLAB的安装目录,比如 C:\Program Files\MATLAB\R2024a\bin。 找到 matlab.exe。 这是最推荐的。现在的软件越来越大,C盘空间本来就紧张,权限还严。
重新安装时,路径选在D盘、E盘或者其他非系统盘。比如 D:\MATLAB\R2024a。 除了路径重置,还有两个相关的坑,提前避开能省不少时间。
子函数与主函数同名。如果你写了两个.m文件,都叫main_func.m,一个在主路径,一个在子文件夹。MATLAB会优先调用它先找到的那个,导致逻辑混乱。确保函数名全局唯一,或者用包(Package)管理。
当前文件夹(Current Folder)。其实90%的情况,你根本不需要去“设置路径”。把你正在写的代码文件夹设为“当前文件夹”,MATLAB会自动在这个文件夹里找子函数。只有那些你要长期用的工具箱(Toolbox),才需要加到路径里。
检查pathdef.m权限。如果你不想重装,也不想每次管理员运行,可以去 matlabroot\toolbox\local\` 目录下,找到pathdef.m` 文件,右键属性,把“只读”去掉,给当前用户加上“完全控制”的权限。不过这招有时候会因为系统更新又被锁回去,不如方案一省心。
别小看路径问题,它能让你对着“Undefined function or variable”的错误提示发呆一下午。花两分钟把软件挪到D盘,一劳永逸。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。