필터 지우기
필터 지우기

How do I separate a data set into separate cell arrays according to the integer on the end of a string?

조회 수: 1 (최근 30일)
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
Bryan
Bryan 2020년 3월 12일
편집: Bryan 2020년 3월 12일
lastint = NaN(size(yourcell,1),1)
for i = 1:size(yourcell,1)
lastint(i) = str2num(yourcell{i,end}(end))
end
% get only the stuff ending with zero
zerostuff = yourcell{lastint==0,:}
Something like that. Wrote on my phone so haven't been able to test it

댓글을 달려면 로그인하십시오.

채택된 답변

Mohammad Sami
Mohammad Sami 2020년 3월 12일
편집: Mohammad Sami 2020년 3월 12일
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
mel1708
mel1708 2020년 3월 13일
Hi Mohammad,
For the line outcell(i,:) = outcell(j,:) Matlab gives me the error "Index in position 1 is invalid. Array indices must be positive integers or logical values.", which I'm guessing has to do with the fact it thinks I am indexing with j and hence has an issue with the first integer being 0. Would you be able to suggest a fix for this?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by