考虑以下文件

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);

将数字数据读入Matrix A。

然后您可以使用

fid = fopen(filename)
headerString = fscanf(fid,'%s/n') % reads header data into a string
fclose(fid)

然后,您可以使用 strtok 将headerString拆分为单元格数组。我能想到的一种方法是处理未知数量的列

编辑

修复了fscanf函数调用

只需使用具有不同格式说明符的文本扫描。

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);

在这种情况下,'heading'将是一个包含单元格的单元格数组,每个列都在其中,因此您必须将它们更改为字符串的单元格数组或其他任何内容。 'data'将是一个包含您读取的每列的数字数组的单元格数组,因此您必须将它们组合在一起才能生成一个矩阵。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top