【问题标题】:calling file defined by variables and wildcard由变量和通配符定义的调用文件
【发布时间】:2016-10-25 14:59:28
【问题描述】:

我正在尝试遍历由变量定义的文件夹,并选择由通配符定义的单个文件(在 matlab R2012a 中)。示例文件为:/folder1/folder2/601/mprage/xyz.nii。在研究这一点时,我尝试通过 dir 和 fullfile 合并变量和通配符,但出现 horzcat(无法从 char 转换为 struct)错误。最终,文件将由函数“callspmsegmentation”处理。我是 matlab 编程新手...这是我的脚本:

clear all

studyDir = '/folder1/folder2';
anatDir = 'mprage';
subjects = {'601', '602', '603'};

for jSubj = 1:length(subjects)
niiname = dir(fullfile(studyDir, subjects{jSubj}, anatDir, '*.nii')); 
nii = [studyDir '/' subjects{jSubj} '/' anatDir '/' niiname];
callspmsegmentation(nii);
end

或者,我尝试了更直接的:(也没有工作)

clear all

studyDir = '/folder1/folder2';
anatDir = 'mprage';
subjects = {'601', '602', '603'};

for jSubj = 1:length(subjects) 
nii = [studyDir '/' subjects{jSubj} '/' anatDir '/*.nii'];
callspmsegmentation(nii);
end

【问题讨论】:

  • 请提供完整的错误信息和堆栈跟踪。

标签: matlab


【解决方案1】:

dir 的输出是一个struct不是一个字符串,所以你必须访问name 字段来获取文件名

niiname = dir(fullfile(studyDir, subjects{jSubj}, anatDir, '*.nii')); 
nii = [studyDir '/' subjects{jSubj} '/' anatDir '/' niiname.name];

我也可能会重新编写它以使用fullfile,这样您就不会对所有这些文件分隔符进行硬编码。这样的事情应该可以工作。

% Store the folder name
folder = fullfile(studyDir, subjects{jSubj}, anatDir);

% Get the file listing
file = dir(fullfile(folder, '*.nii'));

% Append the folder to the filename
nii = fullfile(folder, file.name);

% Process the file
callspmsegmentation(nii);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2019-02-23
    • 2014-03-07
    • 1970-01-01
    相关资源
    最近更新 更多