将文本文件读入MATLAB并存储为两个独立的数组

时间:2014-10-10 23:23:58

标签: arrays matlab file text

我需要能够接受这个:

2.8 7.23 3.64 5.91 9.14 4.17 3.63

2.2 7.53 2.20 10.00 3.28 3.09 7.22

1.1 3.64 7.85 5.15 2.78 7.39 9.15

3.6 3.49 9.99 2.40 7.68 4.53 4.97

2.8 2.60 8.82 5.46 10.00 10.00 7.93

3.5 6.33 4.98 10.00 8.11 2.99 10.00

2.5 6.90 7.35 10.00 10.00 9.93 10.00

1.0 2.05 3.75 5.28 2.34 7.61 9.80

3.8 4.61 7.32 10.00 8.19 2.01 4.19

2.2 5.43 4.12 8.29 5.61 7.33 8.33

3.2 2.13 8.84 2.72 3.40 4.12 9.13

1.4 9.01 5.88 8.79 3.28 7.87 2.03

将其保存到文本文件中,例如nums.txt,并将其保存到Matlab中的数组中。但是我必须将第一列保存为[x by 1]数组,然后将其余列保存为单独的数组。对不起,如果这没有意义。但我无法弄明白。提前谢谢。

编辑:

我设法通过使用这个来保存列数组:

diveData = fopen(dive_data.txt');

degDiff = textscan(diveData, '%f %*[^\n]');

degDiff = degDiff{:};

但是,我不能让阵列的其余部分工作,所以我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

首先,使用textread一次性读入所有数据。如果你这样做,那么你将把所有数据作为一个1D数组读取。要解决此问题,您需要reshape数组,以便拥有7列数组。请注意,MATLAB按列读取数据,因此您需要在完成后转置矩阵。

在此之后,提取第一列以将其放入一个数组中,然后使用其余内容并将其放入另一个数组中。换句话说:

f = textread('nums.txt', '%f');
vals = reshape(f, 7, []).';
oneColumn = vals(:,1);
otherStuff = vals(:,2:end);

oneColumn将是您想要的第一列,而otherStuff将是其他列。当您运行此代码时,这就是我的数据:

oneColumn =

    2.8000
    2.2000
    1.1000
    3.6000
    2.8000
    3.5000
    2.5000
    1.0000
    3.8000
    2.2000
    3.2000
    1.4000

otherStuff =

    7.2300    3.6400    5.9100    9.1400    4.1700    3.6300
    7.5300    2.2000   10.0000    3.2800    3.0900    7.2200
    3.6400    7.8500    5.1500    2.7800    7.3900    9.1500
    3.4900    9.9900    2.4000    7.6800    4.5300    4.9700
    2.6000    8.8200    5.4600   10.0000   10.0000    7.9300
    6.3300    4.9800   10.0000    8.1100    2.9900   10.0000
    6.9000    7.3500   10.0000   10.0000    9.9300   10.0000
    2.0500    3.7500    5.2800    2.3400    7.6100    9.8000
    4.6100    7.3200   10.0000    8.1900    2.0100    4.1900
    5.4300    4.1200    8.2900    5.6100    7.3300    8.3300
    2.1300    8.8400    2.7200    3.4000    4.1200    9.1300
    9.0100    5.8800    8.7900    3.2800    7.8700    2.0300