Matlab:循环遍历单元格数组以连接字符串

时间:2014-11-11 07:36:57

标签: matlab cell-array

我需要导入文件Degree210B49_015.datDegree210B50_005.dat 所以,我这样用像

这样的单元格数组
column_file_number = {'49_015' '50_005'};
for i = column_file_number 
  Name_file= strcat('Degree210B', i, '.dat'); 
  Name_file
  data(:,end+1)=importdata(Name_file); 
end  

但是,Name_file返回的值为'Degree210B49_015.dat'。有报价。 因此,我无法导入数据。

我该如何处理?

1 个答案:

答案 0 :(得分:1)

要了解此处的问题,您需要了解单元数组的工作方式以及for循环的工作方式。 示例中的for循环与以下内容大致相同:

for index = 1:numel(column_file_number)
    i = column_file_number(index);

有两种方法可以访问单元格数组的条目:

1)花括号:column_file_number{index}将为您提供index指定的位置元素。如果index是包含多个索引column_file_number{index}的向量,则将返回单元格数组中index处条目的逗号分隔列表。要检索元素,请执行[v1,v2] = column_file_number{[1,2]}

之类的操作

2)圆括号:column_file_number(index)会在column_file_number指定的索引处为您提供包含index元素的单元格数组 - 即使index只包含一个元素!

在示例中,for循环使用方法2 - 即您获得的Name_file变量是一个元素的单元数组而不是char元素。因此,要解决此问题,您可以将第5行更改为data(:,end+1)=importdata(Name_file{1});或将第3行更改为Name_file= ['Degree210B', i{1}, '.dat'];

问题是一个非常简单的问题,但我认为它很常见(我记得在我第一次学习matlab时遇到同样的问题),并且理解问题发生的原因以及如何解决它对于熟练掌握matlab非常重要!