从Char转换为Struct:错误Matlab

时间:2017-03-21 06:14:46

标签: arrays matlab math char feature-extraction

我什么时候运行此代码;我在matlab上收到错误。

A = dir('D:\Folder_One\Folder_Two\'); 
    len = length(A);
    disp(len)
  P = [];
  Q = [];
  R = [];
    for n = 1: len
        filename = [' D:\Folder_One\Folder_Two\’,  A(n, :)];                   
        mydata = dlmread(filename);                                         
        Pfeatures = features(mydata(:5));                               
        Qfeatures = features(mydata(:7));                             
        P = [P;Pfeatures];
        Q = [Q;Qfeatures];
    end

???使用==>时出错horzcat 从char转换为struct时发生以下错误: 使用==>时出错结构 无法从char转换为struct。

2 个答案:

答案 0 :(得分:0)

变量A是一个结构,它包含目录中文件或文件夹的名称,日期和其他参数,位于不同的字段中。如果你想循环遍历所有文件,你应该只使用字段" name"来自结构,像这样:

filename = [' D:\Folder_One\Folder_Two\’,  A(n).name];

你不能将char与struct A(n)结合使用,但A(n).name是char,所以你可以把它组合起来。

另一个建议是从3循环而不是从1循环,因为如果你查看变量A,你会看到地点1和2有"。"和" ..",用于当前目录及其父目录。我想你不需要它。如果你的文件的名字以一些奇怪的字符开头(!,@,#等),那么点可以在其他地方,你应该用if语句跳过它。无论如何,它比从3开始干净整洁,但两者都应该有效。

@DVarga的另一个建议是跳过所有可能的目录,如果你有一些,可以通过检查A(n).isdir轻松确定。

答案 1 :(得分:0)

Adiel的投票是对的。 A是结构,名称是A的一部分。您应该从A中获取它。 第一行和第二行的dir信息是'。'和' ..'。 你也可以用

    if ~strcmpi( A(n).name,'.') and ~strcmpi( A(n).name,'..')

转义前两个struct