How do I separate a data set into separate cell arrays according to the integer on the end of a string?
1 view (last 30 days)
Show older comments
Lets say I have a large data set of type "cell" set out in the following way..
{[0.9335302759]} {[0.3892578745]} {[0.37648235478]} {[thing0]}
{[0.8965743754]} {[0.5945034750]} {[0.58343053465]} {[thing0]}
{[0.8965743754]} {[0.5945034750]} {[0.58343053465]} {[other0]}
{[0.9335302759]} {[0.3892578745]} {[0.37648235478]} {[thing2]}
{[0.8965743754]} {[0.5945034750]} {[0.58343053465]} {[thing4]}
{[0.8965743754]} {[0.5945034750]} {[0.58343053465]} {[other4]}
{[0.8965743754]} {[0.5945034750]} {[0.58343053465]} {[other4]}
{[0.8965743754]} {[0.5945034750]} {[0.58343053465]} {[thing49]}
{[0.8965743754]} {[0.5945034750]} {[0.58343053465]} {[other49]}
Is there a way to separate the rows corresponding to each integer on the end of the string in the 4th column into separate cell arrays? So for the data above the two values in thing0 and the one in other0 will be in a single cell array, then a 0 since nothing fell under 1, then "thing2" in another, then a 0 for 3, then "thing4" and "other4" in another, and so forth.
I'm not quite sure where to start with this.. hopefully the way I explained it makes sense.
1 Comment
Accepted Answer
Mohammad Sami
on 12 Mar 2020
Edited: Mohammad Sami
on 12 Mar 2020
You need to extract the digit at the end.
% c = yourcell array
digit = regexp(c(:,4),'\d+$','match','once');
[u_d,i,j] = unique(digit);
outcell = arrayfun(@(x)c(j==x,:),i,'UniformOutput',false);
5 Comments
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!