MATLAB R2022b无法加载.nii.gz神经影像数据的问题求助
问题:MATLAB中load_nifti无法读取带空格路径的压缩nii.gz文件
背景
在Ubuntu 22系统的MATLAB中,尝试用load_nifti读取压缩fMRI数据(.nii.gz)。最初使用load_nii时被提示改用load_nifti,当前MATLAB未安装第三方工具箱,load_nifti自R2017b起已集成在图像处理工具箱中。
代码实现
为批量处理受试者数据,构建根路径:
root_path = ['/media/megan2/VERBATIM HD/dHCP_data/sub-' subj '/' 'ses-' ses_id '/' task];
读取文件的代码:
phaseBP = load_nifti([root_path '/BP_demeaned_0.033-0.07Hz_sub-' subj '_' 'ses-' ses_id '_task-rest_desc-preproc_bold-cropped.nii.gz']);
错误信息
运行后返回:
cd /media/megan2/VERBATIM HD zcat /media/megan2/VERBATIM HD/dHCP_data/sub-CC00852XX11/ses-28210/func/BP_demeaned_0.033-0.07Hz_sub-CC00852XX11_ses-28210_task-rest_desc-preproc_bold-cropped.nii.gz > /tmp/tpb5ca9cf4_93fd_45f1_abdf_a96530646c80.load_nifti.m.nii ERROR: gzip: /media/megan2/VERBATIM.gz: No such file or directory gzip: HD/dHCP_data/sub-CC00852XX11/ses-28210/func/BP_demeaned_0.033-0.07Hz_sub-CC00852XX11_ses-28210_task-rest_desc-preproc_bold-cropped.nii.gz: No such file or directory
工作区中仅得到空的0x0矩阵。
已尝试的解决方法
- 反复确认目标文件确实存在于指定目录
- 使用
readnifti可正常读取数据,但需要load_nifti返回的包含头文件的数据结构 - 直接传入完整文件路径调用
load_nifti,错误情况相同
解决方案
问题核心是路径包含空格(VERBATIM HD),load_nifti调用系统zcat命令时未对带空格的路径加引号,导致路径被拆分成两段,无法识别完整文件位置。
有两种可行解决办法:
给文件路径添加引号
在调用load_nifti时,用双引号包裹完整路径,确保系统命令正确识别:full_path = [root_path '/BP_demeaned_0.033-0.07Hz_sub-' subj '_' 'ses-' ses_id '_task-rest_desc-preproc_bold-cropped.nii.gz']; phaseBP = load_nifti(['"' full_path '"']);修改路径为无空格形式
重命名存储设备或文件夹,去掉路径中的空格(比如将VERBATIM HD改为VERBATIM_HD),之后同步更新代码中的路径即可。
内容的提问来源于stack exchange,提问作者paniquebanique
相关产品推荐
相关产品推荐

