【问题标题】:MATLAB: Append two timetables within a cell arrayMATLAB:在元胞数组中附加两个时间表
【发布时间】:2020-07-13 07:36:30
【问题描述】:

我有 2 个单元格数组(大小相同,均为 30*1),其中所有元素都是时间表。让我们假设第一个元胞数组中的第一个元素(时间表)如下:

timeStamps = datetime([2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 

2017 3 5]);

Volume = [51 101 150 200 254 330 35 40]';

Price= [40 35 40 25 40 35 10 25]';
T= table(timeStamps, Volume, Price)
A= table2timetable(T)

第二个元胞数组的第一个元素(时间表)是:

timeStamps = datetime([2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5; 2017 3 5]);

w = [22 10 3 4 4 3 3 4]';

Q= [40 1 2 3 40 335 120 2]';
M= table(timeStamps, w, Q)
B= table2timetable(M)

如何创建一个新的元胞数组(大小为 30*1),以便它们的元素由前两个时间表的变量的附加组成。在这种情况下,这个新元胞数组的第一个元素(或时间表)将如下所示:

 N= table(timeStamps,Volume,Price, w, Q)

  R= table2timetable(N)

对不起,如果我没有定义元胞数组,但我发现获取我想知道的信息没有用。

非常感谢您的帮助!

【问题讨论】:

  • 这是一个很好的问题! (对不起,答案似乎有点琐碎^^)

标签: matlab append cell-array timetable


【解决方案1】:

简单地连接两个表:[A,B]

因此,如果您有两个单元格 C1C2,请遍历它们并到达以下内容

for i = length(C1)
   C1{i} = [C1{i},C2{i}];  
end

【讨论】:

  • 谢谢@max,我使用了您的代码,并得到以下注释“括号表达式中的所有表必须具有相同的行数。”我认为是因为即使将要追加的每个时间表的大小对于每个元素都相同,但它不在元素之间。知道如何纠正吗?谢谢!
  • 如果要连接它们,时间表中的时间戳必须相同。快速解决方法是 [A,timetable2table(B,'ConvertRowTimes',false)],但请注意,在这种情况下,您丢失了 B 的所有时间信息,并且您只是假设它的行具有与 A 相同的时间戳
猜你喜欢
  • 2018-04-26
  • 2011-07-15
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2013-08-09
  • 1970-01-01
相关资源
最近更新 更多