我需要导入文件Degree210B49_015.dat
和Degree210B50_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'
。有报价。
因此,我无法导入数据。
我该如何处理?
答案 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非常重要!