2013-10-29 58 views
1

当我运行下面的代码,我得到了以下错误引用:错误:单元格内容从非单元阵列对象

Cell contents reference from a non-cell array object. 

folder可能需要1或多个文件夹

for x=1:numel(folder) 
    y{x} = fullfile(folder{x},'Status.xml'); 
    getFile = fileread(char(y{x})); 
    content{x} = strtok(getFile ,';'); 
end 


>>whos folder 
    Name  Size   Bytes Class  Attributes 

    folder  1x1    941 struct   


>> numel(folder) 
ans= 
1 
+0

也许在循环前初始化'y'为'y = {}'? – Dan

+0

当你运行你的代码 – Shai

+0

类型'>>哪个文件夹和'>>类(文件夹)'并且看到你得到的输出时,它似乎没有定义'文件夹'。 – Shai

回答

0

假设我认为这应该工作:

y = cell(numel(folder), 1); 

for x=1:numel(folder) 
    y{x} = fullfile(folder{x},'Status'); 
    getFile = fileread(char(y{x})); 
    content{x} = strtok(getFile ,';'); 
end 

您的错误很可能与y{ii}。我猜y没有预先定义。

另外:在y中使用ii作为索引,而在循环中使用x

如果folder是一个正常的矩阵,您是否尝试过使用folder(x)

UPDATE:

我从你的更新问题,看到folderstruct,而不是细胞。尝试以下方法,您可以用.field替换您在folder中输入的任何名称。

y = cell(numel(folder), 1); 
content = cell(numel(folder), 1); 

for x=1:numel(folder) 
    y{x} = fullfile(folder(x).field,'Status'); 
    getFile = fileread(char(y{x})); 
    content{x} = strtok(getFile ,';'); 
end 
+0

当我执行y {x} = fullfile(文件夹{x},'Status')时,我得到了同样的错误; – lola

+0

getFile = fileread(char(y {x}));不正确,因为y {x} = fullfile(文件夹(x).field,'Status.xml');给出C \ Status.xml,而期望的文件是Controller \ Status.xml – lola

+0

我已更新如下:y {x} = fullfile(folder.field(x),'Status.xml') – lola