首页 文章

MATLAB字符串变量

提问于
浏览
0

我试图在MATLAB中编写一个函数,它将在矩阵中分组相当大的excel文件来读取和分析数字(因为有很多excel文件和很多数字) . 我有main函数调用一个函数,该函数应该从main函数中的矩阵中获取excel文件的名称,并使用函数'xlsread'来读取相应的单元格 . 每个文件具有相同的格式和相同数量的列和行,因此指定要读取的单元格不是问题 . 但是,要将每个excel文件传递给读取输入函数,我将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

这可能吗?

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

'file1.xls'

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

'B2:D5'

这告诉MATLAB将包含在矩形中的单元格中的数据导入B2的左上角和D5的右下角 .

谢谢你的帮助 .

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

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

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

1 回答

  • 4

    您的问题最有可能是这一行:

    文件的文件名=(ⅰ);

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

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

相关问题