MATLAB字符串变量

时间:2013-11-21 05:50:13

标签: string excel matlab variables

我正在尝试在MATLAB中编写一个函数,它将在矩阵中对相当大的excel文件进​​行分组以读取和分析数字(因为有很多excel文件和大量数字)。我有main函数调用一个函数,该函数应该从main函数中的矩阵中获取excel文件的名称,并使用函数' xlsread'阅读适当的细胞。每个文件具有相同的格式和相同数量的列和行,因此指定要读取的单元格不是问题。但是,要将每个excel文件传递给读取输入函数,我将excel文件的名称分配给变量,然后将其传递给read函数,然后将该变量传递给xlsread。但是,当我运行它时,我收到错误:" Filename必须是一个字符串。"下面是我如何设置代码的示例。

filenames = {'file1.csv','file2.csv',....};
for i=1:10
   file=filenames(i);
   data=readin(file);
end


function [sheetdata] = readin(filename)
sheetdata = xlsread(filename,'cellrange','sheet');
end

这可能吗?

只是fyi,xlsread函数将参数作为字符串。第一个参数是文件的名称,例如:

' file1.xls'

第二个参数是要导入的单元格范围,例如:

' B2:D5'

这告诉MATLAB导入包含在矩形中的单元格中的数据,其中左上角是B2,右下角是D5。

感谢您的帮助。

编辑:如果我将变量直接分配给文件名,我可以使它工作,例如:

name='file1';
xlsread(name,'A1:C5');

所以我想问题在于我如何设置文件名矩阵。我想以这种方式进行设置,因为我不知道最终需要分析多少张纸,并且通过使用矩阵,我可以轻松快速地添加,删除或编辑任何纸张而无需更改我代码的任何其他部分。

1 个答案:

答案 0 :(得分:4)

你的问题最有可能出现在这一行:

文件的文件名=(ⅰ);

正如你所定义的那样,

filenames是一个char矩阵。这意味着filenames(1)将根据您的意愿返回f,而非file1.csv。我认为最好的选择是将文件名转换为单元格数组:

filenames = {'file1.csv','file2.csv',....};
for i=1:10
   file=filenames{i};
   data=readin(file);
end