Matlab addpath用法:添加路径常见问题解答

Matlab里调用自己写的函数或者第三方工具箱,总得用addpath添加搜索路径,很多新手搞不清用法,经常出"找不到函数"的错。本文讲清楚addpath基本用法和那些常见的坑。
基本语法
addpath作用就是把某个文件夹加到Matlab的搜索路径里,这样Matlab运行的时候才能找到里面的函数和脚本。
最简单用法:
addpath('文件夹路径');
多个文件夹一起加:
addpath('文件夹1', '文件夹2');
常用参数
-end 加到路径末尾
addpath('myfolder', '-end');
-begin 加到路径开头(默认就是这个)
addpath('myfolder', '-begin');
如果有同名函数,路径排在前面的会被先找到。所以你要覆盖原有函数,就把你的路径放开头。
-fsw 跳过缓存刷新
加了这个参数加路径更快,一般很少用到,不用管它。
常见用法举例
添加当前文件夹下的toolbox文件夹
addpath('./toolbox');
添加绝对路径
addpath('D:\code\matlab\mytoolbox');
Windows路径注意用正斜杠或者双反斜杠,单反斜杠会转义出错,这点很多人踩坑。
添加文件夹和所有子文件夹
addpath默认只加指定文件夹本身,不会递归加子文件夹。要把整个文件夹树都加进来,配合genpath用:
addpath(genpath('你的文件夹'));
这个写法太常用了,装第三方工具箱基本都这么写。
常见问题
加了路径还是找不到函数
几个常见原因:
- 路径写错了,检查一下文件夹位置对不对
- 只加了父文件夹,函数在子文件夹里没加上,用genpath解决
- 函数名和Matlab自带函数重名,自带函数优先级高,把你的路径放开头
addpath('xxx', '-begin') - 没保存路径,关掉Matlab再开又找不到了
重启Matlab后路径没了
addpath默认只是临时添加,只在当前Matlab会话有效,关了再开就没了。要永久保存:
savepath
执行完这条命令,路径就保存好了,下次开Matlab还在。
也可以改startup.m文件,在里面写addpath,每次Matlab启动自动执行。
怎么移除路径
不用了就移除:
rmpath('文件夹路径');
移除整个文件夹树:
rmpath(genpath('你的文件夹'));
怎么看当前都有哪些路径
path
直接显示所有搜索路径。找某个函数从哪加载的:
which 函数名
能看到具体路径,排查问题特别有用。
什么时候用addpath
- 装第三方工具箱,工具箱不在默认路径,必须加
- 自己写了一堆函数放在单独文件夹,调用前要加
- 项目分多个文件夹,要加各个模块路径
实用技巧
写启动脚本
你可以在用户目录写一个startup.m,把常用工具箱路径都加进去:
% startup.m
addpath(genpath('D:\tools\matlab\toolbox1'));
addpath(genpath('D:\tools\matlab\toolbox2'));
每次Matlab启动自动加好,不用每次手动加,省很多事。
相对路径方便项目迁移
项目放U盘换电脑,绝对路径会变,用相对路径:
addpath(genpath(fullfile(pwd, 'toolbox')));
只要你在项目根目录运行,就能正确找到路径,不用改代码。
小结
addpath用法其实简单,记住这几点:
- 只加当前文件夹,要加子文件夹用genpath
- 临时添加只在当前会话有用,要永久保存执行savepath
- 同名函数路径在前优先,自定义函数要覆盖就放开头
- 查函数在哪用which,排查问题很快
大部分"找不到函数"的问题,都是路径没加对,按上面说的检查一遍基本都能解决。
浙公网安备 33010602011771号