将数据文件加载到变量中

时间:2016-10-20 10:28:17

标签: octave

我使用以下格式的数据文件(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行数据,是否有更高效的加载数据文件的方法?

2 个答案:

答案 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,则根据文件本身确定字段之间的分隔符。

     

给定两个标量参数r0c0,它们定义了要读取的数据的起始行和列。这些值从零开始索引,这样第一行对应的索引为零。

所以简单写作

X = dlmread('xvalues.txt');
y = dlmread('yvalues.txt');

完成这项工作。 请注意,Octave可以从文件中推断出分隔符(在您的情况下为',')。