MATLAB R2023a-R2025a中parfor执行失败:是预期行为还是Bug?
自定义脚本遮蔽MATLAB内置
profile函数导致parfor执行失败的原因及解决办法 问题现象
- 存在两个MATLAB脚本
profile.m和try_parfor.m,按指定目录结构摆放后,在安装了Parallel Computing Toolbox的MATLAB R2023a-R2025a版本中执行profile命令,会触发报错,提示找不到fun函数和try_parfor.m文件。 - 把
profile.m重命名为test.m并修改内部函数名后,执行test命令就能正常运行。 - 该问题在MATLAB R2021a-R2022b中部分测试未出现,但有用户反馈R2021b也存在此问题。
根本原因
profile是MATLAB自带的性能分析内置函数,当你自定义同名脚本profile.m时,会直接遮蔽这个内置函数。在R2023a及更新版本中,并行计算工具箱在初始化并行池或分发parfor任务时,会隐式调用内置profile函数做环境校验或性能追踪,但此时你的自定义脚本覆盖了这个内置函数,导致并行环境无法正确加载依赖的脚本和函数,最终出现找不到文件/函数的错误。
解决办法
- 不要用内置函数名命名自定义脚本/函数:直接将
profile.m重命名为非内置函数名(比如test.m),同时同步修改脚本内部的函数定义名称,保证和文件名一致。 - 检查路径优先级:用
which profile命令查看当前生效的是哪个文件,确认是否存在遮蔽情况,确保自定义脚本不会出现在MATLAB路径的更高优先级位置。
内容的提问来源于stack exchange,提问作者Nuno




