Matlab.-删除单元格数组中每个元素都是时间表的重复项



我有一个大小为360*1的单元格数组,其中每个元素由一个330*3的时间表组成。每个时间表上每列的名称都是"小时"、"数量"one_answers"价格"。对于每个时间表,我想删除重复的数量观察(当然,我也想删除其相应的价格和小时(。我该怎么做?不幸的是,当我有一个向量时,函数"unique"是很好的,但对于单元数组来说就不好了。

提前感谢!

在这里,我提供了一个时间表的示例代码,

Date = datetime({'2015-12-18 08:03:05';'2015-12-18 10:03:17';'2015-12-18 12:03:13';'2015-12-18 12:04:13';'2015-12-18 12:05:13'});
Hour = [1;1;1;1;1];
Volume = [152;152;300;400;500];
Price = [13.4;6.5;7.3;10;11];
TT = timetable(Date,Hour,Volume,Price)

目标是消除两个152卷的观测结果,这适用于单元阵列中包含的所有时间表。

这几乎只是一个关于如何从表中删除元素的问题。这是您的MVE:

dts = [datetime('yesterday')
datetime('today')
datetime('now')
datetime('tomorrow')];
T = timetable(dts,rand(length(dts),1),rand(length(dts),1),'VariableNames',{'price','volume'});
T.volume(4) = T.volume(2);

注意,volume的第四个条目与第二个条目相同。此外,我假设volume是一个向量(听起来很合理(。。。

% find unique entries of the vector T.volume
[~, idx] = unique(T.volume);
% delete other rows / better: keep unique rows of the table
T = T(idx,:);

如果你现在处理一个有很多表的单元格,只需在它上面循环。假设你的360x1单元格被称为C:

for i = 1:length(C)
% get table from cell
T = C{i};
% do the stuff above
%...
% assign cropped table back to the cell
C{i} = T;
end

相关内容

  • 没有找到相关文章