从相对路径加载 Matlab


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

给我这样的错误

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

read_c3d_feat错误(第 12 行(

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

您的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是文本条目的单元格,则应如上所述使用大括号对其进行索引。如果它是一个矩阵(因为无论如何所有条目似乎都是数字(,那么在传递给dir时应该使用 num2str

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']);
        % ...

最新更新