MATLAB字符串变量

1 string variables excel matlab

我试图在MATLAB中编写一个函数,该函数将矩阵中相当大的excel文件分组以读取和分析数字(因为有很多excel文件和很多数字)。我的主函数调用了一个函数,该函数应该从主函数的矩阵中获取Excel文件的名称,然后使用函数“ xlsread”读取相应的单元格。每个文件具有相同的格式以及相同的列和行数,因此指定要读取的单元格不是问题。但是,要将每个excel文件传递给read输入函数,我将excel文件的名称分配给一个变量,然后将该变量传递给read函数,该函数随后将该变量传递给xlsread。但是,当我运行它时,出现错误:“文件名必须是字符串。” 以下是我如何设置代码的示例。

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
Run Code Online (Sandbox Code Playgroud)

这可能吗?

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

'file1.xls'

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

'B2:D5'

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

谢谢你的帮助。

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

name='file1';
xlsread(name,'A1:C5');
Run Code Online (Sandbox Code Playgroud)

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

MrA*_*man 5

您的问题很可能与以下行有关:

file =文件名(i);

filenames如您所定义,它是char的矩阵。这意味着filenames(1)将返回f,而不是file1.csv您想要的。如我所见,最好的选择是将文件名转换为单元格数组:

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