string - MATLAB 字符串变量

标签 string excel matlab variables

我正在尝试在 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

这可能吗?

仅供引用, xlsread 函数将参数作为字符串接收。第一个参数是文件名,例如:

'file1.xls'

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

'B2:D5'

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

谢谢你的帮助。

编辑:如果我将变量直接分配给文件名,我可以让它工作,例如:
name='file1';
xlsread(name,'A1:C5');

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

最佳答案

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

文件=文件名(i);
filenames ,正如你所定义的,是一个 char 矩阵。这意味着 filenames(1)将返回 f ,而不是 file1.csv如你所愿。如我所见,最好的选择是将文件名转换为元胞数组:

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

关于string - MATLAB 字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20113485/

相关文章:

c++ - 从字符串中随机选择特定子序列

matlab - Matlab 中的蒙太奇 - 保存并显示

matlab - 超链接导致已编译的 MATLAB 应用程序崩溃

matlab - 如何在 MATLAB 中编写 GUI?

c++ - 试图在指针类型字符串中查找子字符串 - C++

string - 从 MATLAB 系统命令中查找换行符

c++ - 将单个字符串分成多个堆栈

java - JExcelAPI 错误地读取日期字段

c++ - 如何将 C++ vector 导出到 excel?

excel - VBA,修剪路径的一部分