如何从数组中的数组中获取值并将它们放入自己的数组中?

How do I take the values from an array inside an array and put them into their own array?

我在 Octave 工作,从 CSV 文件(大约 10^6 行)导入数据。每行有三列 - 时间戳(全天的小数部分)、信号 1 和信号 2。时间戳是双精度值,我需要这样导入它。

经过大量实验,我终于以双精度(浮点)格式提取了值。我使用了以下代码:

Output = textscan(FileID,'%s %f %f','Delimiter',',')

这个调用给出了一个 class cell 的变量,它是 1x3(注意 - 不是我期望的 3x10^6)。

查看变量,我看到了这个:

Output =
{
  [1,1] =
  {
    [1,1] = 0.85857643518518500000
    [2,1] = 0.85857648148148100000
    [3,1] = 0.85857652777777800000
    [4,1] = 0.85857657407407400000
    [5,1] = 0.85857662037037000000
    [6,1] = 0.85857665509259300000
    [7,1] = 0.85857670138888900000
    [8,1] = 0.85857674768518500000
    [9,1] = 0.85857679398148200000
    [10,1] = 0.85857684027777800000
    [11,1] = 0.85857688657407400000
    [12,1] = 0.85857693287037000000
    [13,1] = 0.85857697916666700000
    [14,1] = 0.85857702546296300000
    [15,1] = 0.85857707175925900000
    [16,1] = 0.85857711805555600000
    [17,1] = 0.85857715277777800000
    [18,1] = 0.85857719907407400000
-- less -- (f)orward, (b)ack, (q)uit

注意它在最后被截断但是那里有更多数据,包括 1x3 数组中的其他项目(即信号 1 和信号 2)。

现在 - 如何从 OutputMyData 应该有 3 列和一百万行的光荣数据?也许我以不同的方式导入文件?我知道我不能使用 dlmreadcsvread 因为它们不会让我输入双精度数字(除非你知道办法)。我试过 textread 但没有成功(它告诉我我有一堆 NaN)。

输出是一个元胞数组,其中每个条目对应于您的格式代码之一。您可以执行以下操作:

my_strings = Output{1};
my_data = [Output{2}, Output{3}];

小题外话: 可以像访问普通数组一样访问元胞数组的内容,只是使用 {} 而不是 ()。如果将 () 与元胞数组一起使用,它 returns 另一个元胞数组。