Matlab从相对路径加载

时间:2017-05-25 03:02:55

标签: matlab image-processing

function []= read_c3d_feat(output_list_relative)
dir_list = importdata(output_list_relative);
dim_feat = 512;
for i = 1 : size(dir_list, 1)
        dir_str = char(dir_list(i));
        feat_files = dir([dir_str, '/*.res5b']);
        num_feat = length(feat_files);
        feat = zeros(num_feat, dim_feat);
        for j = 1 : num_feat
        feat_path = strcat(dir_str, '/', feat_files(j).name);
        ...............
....................so on

给我错误,如

使用dir时出错 路径无效。该路径不得包含空字符。

read_c3d_feat(第12行)中的错误

    feat_files = dir([dir_str, '/*.res5b']);

1 个答案:

答案 0 :(得分:0)

您的dir_list变量必须包含包含空字符的字符串,如错误所示。如果您尝试使用硬编码字符串,您会发现它有效:

function read_c3d_feat(output_list_relative)
    dir_list = {'21';'45';'18'};
    for i = 1:size(dir_list, 1)
        dir_str = dir_list{i}; % Loops through '21','45','18'
        % The dir function now works because we know dir_str is a valid string
        feat_files = dir([dir_str, '/*.res5b']); 
    end
end

这意味着您需要调试代码并找出此行实际分配给dir_list的内容:

dir_list = importdata(output_list_relative);

请注意,如果dir_list是文本条目的单元格,则应使用大括号对其进行索引,如上所述。如果它是一个矩阵(因为所有条目似乎都是数字),那么在传递给num2str时你应该使用dir

function read_c3d_feat(output_list_relative)
    dir_list = importdata(output_list_relative);
    dim_feat = 512;
    for i = 1:size(dir_list, 1)
        feat_files = dir([num2str(dir_list(i)), '/*.res5b']);
        % ...