Matlab错误:???单元格内容引用非单元格数组对象

时间:2010-02-28 14:24:55

标签: matlab

在问这个问题之后:

  

我如何阅读以下文件   使用for循环:(可循环   忽略文件名中的字符?)

     

abc-1.TXT cde-2.TXT ser-3.TXT
  wsz-4.TXT aqz-5.TXT iop-6.TXT
  ......

     

(事实上,我有500个文件)

     

我必须在开头添加什么   这个循环??

     

表示i = 1:1:500
      nom_fichier = strcat(['MyFile .......'num2str(i)   '.TXT']);

我尝试了以下解决方案:

Names = dir('MyFile\*.TXT');  

for i = 1:500  
    fn = ['MyFile',filesep,Names{i},'-',num2str(i),'.TXT'];  
    data = load(fn);    
    .....

运行程序后,我收到以下错误:

??? Cell contents reference from a non-cell array object.    

你能帮我解决这个问题吗? 我的目标是阅读500个文件的内容。

1 个答案:

答案 0 :(得分:5)

你正试图拼凑一个解决方案而不考虑你在做什么。

你需要查看并理解dir返回的内容。

Names = dir('MyFile\*.TXT');

它返回一个结构。看到此结构的一个字段是名称字段。所以试试这个:

Names(1).name
ans =
  abc-1.TXT

看到它将是文件的完整名称,无需构建它。你现在可以围绕这个结构进行循环,

for i = 1:numel(Names)
  data = load(Names(i).name);

  % do stuff here...
end

如果您希望此处的名称列表仅作为单元格数组,请执行以下操作:

Names = {Names.name};

现在,看看这个变量中的内容。现在是一个单元阵列。不要试图盲目地使用它而不考虑。这将是该目录中每个txt文件的完整名称列表。您根本不需要再建立名称。只需对每个文件名使用load。