【发布时间】:2018-03-24 11:49:00
【问题描述】:
在 Matlab 中,我有一个单元格,其中第一列由太多的标记组成。我们要删除这些无关标记的单元格的整行。
我们在单元格的第一列中有四种标记类型 - '71', '72', '73' and '74':存储为字符串。只要出现这些标记中的任何一个,它们就会重复('71''72' 23 次和'73' '74' 16 次)。我们希望在每次出现标记时保留第一个演示文稿。然后 '71' '72' 每 6 次保持一次,而 '73' '74' 每 4 次保持一次。
单元格的长度为550,因此71, 72, 73 and 74 的块在单元格中重复了很多次,除了这四个之外,我们还想保留其他标记。
单元格的一小部分如下所示:
'12' 14737 29472
'31' 44747 89492
'4' 44771 89540
'53' 53756 107510
'73' 53831 107660
'73' 54082 108162
'73' 54331 108660
'73' 54582 109162
'73' 56081 112160
'73' 56331 112660
'73' 56581 113160
'73' 56831 113660
'73' 58330 116658
'73' 58580 117158
'73' 58829 117656
'73' 59079 118156
'73' 60579 121156
'73' 60829 121656
'73' 61079 122156
'73' 61329 122656
'63' 351340 702678
'4' 351361 702720
'54' 360342 720682
'74' 360375 720748
'74' 360633 721264
'74' 360883 721764
'74' 361133 722264
'74' 362632 725262
'74' 362882 725762
'74' 363132 726262
'74' 363382 726762
'74' 364881 729760
'74' 365131 730260
'74' 365381 730760
'74' 365631 731260
'74' 367130 734258
'74' 367380 734758
'74' 367630 735258
'74' 367880 735758
'64' 369374 738746
'4' 369379 738756
'51' 378376 756750
'71' 378409 756816
'71' 378584 757166
'71' 378750 757498
'71' 378917 757832
**continued**
我不知道该怎么做,我尝试使用索引来解决这个问题,但到目前为止还没有成功。
有人可以帮忙吗?
谢谢
到目前为止我已经尝试过:
function Y = correctRows(y)
Y.type = {};
Y.latency = [];
Y.latency_ms = [];
for i = 1:length(y)
if strcmp(y(i).type,'71') || strcmp(y(i).type,'72')
Y(i) = y(i);
i = i+5;
elseif strcmp(y(i).type,'73') || strcmp(y(i).type,'74')
Y(i) = y(i);
i = i+3;
else
Y(ii) = y(i);
end
end
【问题讨论】:
-
你能分享你目前开发的代码吗?还有一个输出示例
-
@Irreducible 我已将其添加到问题中
-
71和72永远不会互相关注? 73 和74的相同问题 -
@Irreducible 它们都是随机的,任何一个都可以跟随另一个
-
你写了“我们希望每次出现标记时都保留第一个演示文稿。” 然后在下一行中,你用这些话自相矛盾:“那么对于 '71' '72' 保持每 6 次,而对于 '73' '74' 保持每 4 次。”
标签: matlab unique cell rows indices