考虑以下文件
var1 var2 variable3
1 2 3
11 22 33
我想将数字加载到矩阵中,并将列标题加载到一个变量中,该变量相当于:
variable_names = char('var1', 'var2', 'variable3');
我不介意将名称和数字拆分为两个文件,但是准备 matlab 代码文件并对其进行评估不是一种选择。
请注意,可以有任意数量的变量(列)
考虑以下文件
var1 var2 variable3
1 2 3
11 22 33
我想将数字加载到矩阵中,并将列标题加载到一个变量中,该变量相当于:
variable_names = char('var1', 'var2', 'variable3');
我不介意将名称和数字拆分为两个文件,但是准备 matlab 代码文件并对其进行评估不是一种选择。
请注意,可以有任意数量的变量(列)
我建议对这样的操作使用importdata:
d = importdata('filename.txt');
返回是一个结构体,其数字字段位于名为“data”的成员中,列标题位于名为“colheaders”的字段中。
另一个用于导入此类操作数据的有用界面是统计工具箱中可用的“数据集”类。
如果标题在第一行,那么
A = dlmread(filename,delimString,2,1);
将数值数据读入矩阵 A。
然后你可以使用
fid = fopen(filename)
headerString = fscanf(fid,'%s/n') % reads header data into a string
fclose(fid)
然后,您可以使用strtok将 headerString 拆分为一个元胞数组。我能想到的一种方法是处理未知数量的列
编辑修复 fscanf 函数调用
只需使用带有不同格式说明符的 textscan 即可。
fid = fopen(filename,'r');
heading = textscan(fid,'%s %s %s',1);
fgetl(fid); %advance the file pointer one line
data = textscan(fid,'%n %n %n');%read the rest of the data
fclose(fid);
在这种情况下,“标题”将是一个单元格数组,其中包含每个列标题的单元格,因此您必须将它们更改为字符串的单元格数组或您想要的任何内容。'data' 将是一个元胞数组,其中包含您读取的每一列的数值数组,因此您必须将它们组合在一起以构成一个矩阵。