【问题标题】:How do I take the values from an array inside an array and put them into their own array?如何从数组中的数组中获取值并将它们放入自己的数组中?
【发布时间】:2016-02-26 10:20:49
【问题描述】:

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

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

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

这个调用给出了一个 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)。

【问题讨论】:

  • output{1} 带给你什么?

标签: arrays matlab csv import octave


【解决方案1】:

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

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

小题大做: 除了使用 {} 而不是 () 之外,可以像访问普通数组一样访问元胞数组的内容。如果将 () 与元胞数组一起使用,则会返回另一个元胞数组。

【讨论】:

  • 哇,谢谢马特。为什么单元格 vs 数组?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 2020-03-29
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多