如何从数组中的数组中获取值并将它们放入自己的数组中?
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)。
现在 - 如何从 Output
到 MyData
应该有 3 列和一百万行的光荣数据?也许我以不同的方式导入文件?我知道我不能使用 dlmread
或 csvread
因为它们不会让我输入双精度数字(除非你知道办法)。我试过 textread
但没有成功(它告诉我我有一堆 NaN
)。
输出是一个元胞数组,其中每个条目对应于您的格式代码之一。您可以执行以下操作:
my_strings = Output{1};
my_data = [Output{2}, Output{3}];
小题外话:
可以像访问普通数组一样访问元胞数组的内容,只是使用 {} 而不是 ()。如果将 () 与元胞数组一起使用,它 returns 另一个元胞数组。
我在 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)。
现在 - 如何从 Output
到 MyData
应该有 3 列和一百万行的光荣数据?也许我以不同的方式导入文件?我知道我不能使用 dlmread
或 csvread
因为它们不会让我输入双精度数字(除非你知道办法)。我试过 textread
但没有成功(它告诉我我有一堆 NaN
)。
输出是一个元胞数组,其中每个条目对应于您的格式代码之一。您可以执行以下操作:
my_strings = Output{1};
my_data = [Output{2}, Output{3}];
小题外话: 可以像访问普通数组一样访问元胞数组的内容,只是使用 {} 而不是 ()。如果将 () 与元胞数组一起使用,它 returns 另一个元胞数组。