Split vector into smaller vectors, then separate

1 次查看(过去 30 天)
I have a 240x1 cell, in each row there is a 1x1 struct. In each struct there are 5 fields, one of these is 'name' that can be target, notTarget, gap (these are the 3 possible names). The order is always the same (as concerning the name field): target or not target gap target or not target gap ....
I should split this vector in smaller vectors (2x1) made with a target (or not target) and a gap. Then I should separate the two different group of vectors: one with target, one with notTarget. Can anyone help me please?
  2 个评论
Stephen23
Stephen23 2016-2-8
编辑:Stephen23 2016-2-8
I would suggest that you convert your data in a non-scalar structure, then your task become easier using basic indexing and commands. The best solution would be to get rid of the cell array entirely, and have just one non-scalar structure. This will simplify your code and make is more efficient.

请先登录,再进行评论。

采纳的回答

Guillaume
Guillaume 2016-2-8
As per Stephen's comment, convert your cell array into a non-scalar structure (it should use more or less the same amount of memory:
c = {struct('name', 'target', 'idx', 1);
struct('name', 'not target', 'idx', 2);
struct('name', 'target', 'idx', 3)}; %for example
%convert c into non-scalar structure
ns = vertcat(c{:}); %concatenate all the structures into one.
If you want to split the non-scalar structure into two structures, it's dead easy:
targets = ns(strcmp({ns.name}, 'target'));
nottargets = ns(strcmp({ns.name}, 'not target'));

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by