MATLABstringvariables

我正在尝试在MATLAB中编写一个函数,它将在一个matrix中对一些相当大的excel文件进​​行分组,以读取和分析这些数字(因为有很多excel文件和很多数字)。 我有主函数调用一个函数,应该从主函数中的matrix中取出excel文件的名称,并使用函数“xlsread”来读取适当的单元格。 每个文件具有相同的格式和相同数量的列和行,因此指定要读取的单元格不是问题。 但是,要将每个excel文件传递给读取input函数,我将excel文件的名称分配给一个variables,然后将其传递给read函数,然后将该variables传递给xlsread。 但是,当我运行它,我得到的错误:“文件名必须是一个string”。 下面是我如何设置我的代码的一个例子。

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函数将参数作为string。 第一个参数是文件的名称,例如:

'file1.xls'

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

'B2:D5'

这告诉MATLAB将矩形中包含的单元格中的数据与B2的左上angular和D5的右下angular一起导入。

谢谢你的帮助。

编辑:我可以得到它的工作,如果我把variables直接分配给文件名,例如:

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

所以我想这个问题在于我如何设置文件名的matrix。 我想这样设置,因为我不知道最终要分析多less张纸,通过使用matrix,我可以方便快捷地添加,删除或编辑任何纸张,而无需更改我的代码的任何其他部分。

你的问题很可能是这条线:

文件的文件名=(ⅰ);

filenames ,正如你所定义的那样,是一个charmatrix。 这意味着filenames(1)将返回f ,而不是您想要的file1.csv 。 正如我所看到的,最好的select是将文件名转换为单元格数组:

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