You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab/Simulink生成随机ID及dig文件夹的原因与解决咨询

问题分析与解决方案

一、随机ID文件夹和dig文件夹的生成原因

  • 随机ID命名文件夹:这是Matlab运行Simulink仿真或脚本时自动创建的临时工作目录,用于存放仿真中间文件(编译缓存、模型临时实例、日志片段等)。通过-batch模式批量调用Matlab时,每个进程会独立生成这类目录,默认选当前工作目录(即lib_path/param_path所在目录)作为生成位置。
  • dig文件夹:这是Matlab桌面组件的缓存目录,即便用无界面-batch模式运行,部分后台服务(如帮助文档索引、账号关联残留进程)仍会触发缓存生成,里面的blob_storage、Cache、Cookies等都是桌面环境的缓存数据,属于无界面运行时的遗留产物。

二、为何仅在测试量增大后出现

  • 单批次测试时,Matlab进程结束后通常会自动清理临时文件,但循环调用大量测试时,进程启停过于频繁,自动清理机制来不及完成(比如进程被快速终止、清理线程被高优先级任务抢占),导致临时文件大量残留。
  • 连续/并发的Matlab进程会触发桌面服务的缓存累积逻辑,单次运行不会生成的dig文件夹,在多次运行后因缓存阈值被触发而创建并保留。

三、无需删除全部临时文件的替代方案

1. 指定专属临时目录

修改Python调用代码,给Matlab指定单独的临时文件夹,避免污染业务目录:

import tempfile
import os

# 创建全局临时目录,可按批次拆分或所有测试共用
matlab_temp_dir = os.path.join(tempfile.gettempdir(), "matlab_sim_tests")
os.makedirs(matlab_temp_dir, exist_ok=True)

# 给Matlab启动命令添加-tempdir参数指定临时目录
init_matlab_fcn = "%s -tempdir \"%s\" -batch \"addpath('%s');" % (matlab_exe, matlab_temp_dir, matlab_script)  
init_matlab_fcn += "addpath(genpath('%s'));" % lib_path
init_matlab_fcn += "run('%s');" % param_path
init_matlab_fcn += "Main_Function('%s');exit\"" % sim_project

所有临时文件会集中到指定目录,后续可按需清理(比如定期删除7天前的文件,保留近期测试临时数据)。

2. 在Matlab脚本内手动控制临时文件生成

在Main_Function开头添加代码,强制设置Simulink临时文件目录并禁用桌面缓存:

% 指定Simulink仿真缓存目录
sim_temp_dir = fullfile(tempdir, 'sim_test_temp');
mkdir(sim_temp_dir);
set_param(0, 'SimulationCacheFolder', sim_temp_dir);
% 禁用桌面服务,避免生成dig文件夹
com.mathworks.mlservices.MLDesktopServices.getInstance().disableDesktop();

3. 优化Python调用的进程管理

避免Matlab进程频繁启停,改为在单个Matlab进程内批量运行所有测试:

  • 修改Matlab脚本,让Main_Function接受测试列表参数,一次性处理所有测试任务
  • Python仅调用一次Matlab进程,传入所有测试项目,减少进程启停带来的临时文件残留

内容的提问来源于stack exchange,提问作者kitchat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:42:47