我使用以下格式的数据文件(data.mat):
load('data.mat')
>> disp(X)
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 0
1 1 1 0
1 1 1 0
1 1 0 0
1 1 0 0
1 1 0 0
>> disp(y)
1
1
1
2
2
2
3
3
3
我试图创建八度音可以转换为.mat
的文本数据文件xvalues.txt :
1, 1, 1, 1
1, 1, 1, 1
1, 1, 1, 1
1, 1, 1, 0
1, 1, 1, 0
1, 1, 1, 0
1, 1, 0, 0
1, 1, 0, 0
1, 1, 0, 0
yvalues.txt :
1
1
1
2
2
2
3
3
3
要指示Octave将xvalues.txt读入变量X并将yvalues.txt读入变量y,我使用:
X = xvalues.txt
y = yvalues.txt
这是在Octave中读取文件的自觉方法吗?这些数据文件在某些时候会包含10 ^ 6行数据,是否有更高效的加载数据文件的方法?
答案 0 :(得分:1)
In the following code, each column of the xvalues file is read as separate vector, then combined in a matrix X:
[a,b,c,d] = textread("xvalues.txt", "%d %d %d %d", 'delimiter', ',', "endofline", "\n");
X = [a, b, c, d];
[y] = textread("yvalues.txt", "%d", "endofline", "\n");
disp(X);
disp(y);
Check the reference for the textread
here
答案 1 :(得分:1)
无需转换文本文件。
您可以使用函数dlmread()
:
data = dlmread(file, sep, r0, c0)
从文本文件中读取矩阵数据,该文件在数据值之间使用分隔符
sep
。如果未定义
sep
,则根据文件本身确定字段之间的分隔符。给定两个标量参数
r0
和c0
,它们定义了要读取的数据的起始行和列。这些值从零开始索引,这样第一行对应的索引为零。
所以简单写作
X = dlmread('xvalues.txt');
y = dlmread('yvalues.txt');
完成这项工作。
请注意,Octave可以从文件中推断出分隔符(在您的情况下为','
)。