Matlab使用dicm2nii时如何自定义.json、.gz输出文件名
dicm2nii 输出文件批量追加自定义字符串操作方法
两种实现路径,新手优先选第一种,零侵入不破坏原脚本功能。
方案1:转换后批量重命名(推荐)
不需要修改原dicm2nii脚本,正常完成格式转换后,用几行Matlab代码统一重命名即可,后续脚本升级也不会受影响:
- 第一步:将Matlab当前工作目录切换到转换后文件的存放文件夹
- 第二步:把下方代码中
append_str的赋值替换成你需要追加的字符串,比如要追加被试编号_sub001就对应修改,直接运行即可完成所有.json、.nii、.nii.gz文件的重命名
% 自定义要追加的字符串 append_str = '_自定义追加内容'; % 匹配所有目标格式文件 file_set = [dir('*.json'); dir('*.nii'); dir('*.nii.gz')]; for idx = 1:length(file_set) old_fullname = file_set(idx).name; % 单独处理双后缀的.nii.gz格式 if endsWith(old_fullname, '.nii.gz') new_fullname = [old_fullname(1:end-7), append_str, '.nii.gz']; else [~, fname_part, ext_part] = fileparts(old_fullname); new_fullname = [fname_part, append_str, ext_part]; end movefile(old_fullname, new_fullname); end
方案2:修改脚本实现转换时自动追加后缀
如果需要每次转换自动带上固定后缀,不需要事后重命名,只需要修改一处核心文件名生成逻辑即可,不需要改动save_json相关代码:
- 第一步:用Matlab编辑器打开
dicm2nii.m,按Ctrl+F搜索定位到输出文件名赋值的代码行,特征是变量名为fnm、拼接了输出路径和文件名主体,不同版本脚本位置略有差异,通常在1100-1300行区间 - 第二步:在文件名拼接逻辑中插入自定义字符串即可,参考修改示例:
% 提前定义要追加的固定字符串 append_str = '_自定义追加内容'; % 原脚本的文件名定义行格式类似:fnm = [outPath filesep file_name_str]; % 修改为如下形式即可 fnm = [outPath filesep file_name_str append_str];
注意:该位置是所有输出文件的公共命名入口,修改后生成的.nii、.nii.gz、.json文件都会自动带上追加的字符串,
save_json函数仅接收传入的完整文件路径执行写操作,本身不独立生成文件名,不需要单独修改该函数内的逻辑。
新手修改脚本前建议先备份一份原文件,修改出错直接替换备份文件即可恢复原有功能。
内容的提问来源于stack exchange,提问作者Chunker
相关产品推荐
相关产品推荐

