how to split values in a cell
2 次查看(过去 30 天)
显示 更早的评论
Hi!
I have 'out' (attached) and I want to divide the phrases in the first columns based on the
numerical value in the second columns.
I want to obtain three arrays: in the first I want to put the phrases with numerical value
in the second columns <0, in the second I want to put the phrases with numerical value
in the second columns = 0 and in the third I want to put the phrases with numerical value
in the second columns >0
Can you help me?
2 个评论
Shivam Raikundalia
2017-7-28
编辑:Shivam Raikundalia
2017-7-28
Hello,
So if you do not know how large your 3 arrays are going to be and you want them to be exact size I suggest you do something like this:
firstarray={};
secondarray={};
thirdarray={};
for i=1:size(out,1)
if out{i,2}<0
firstarray{end+1}=out(i,1);
elseif out{i,2}==0
secondarray{end+1}=out(i,1);
else
thirdarray{end+1}=out(i,1);
end
end
This method is a little slow however since one of the arrays change size on every iteration. Hope this helps!
回答(1 个)
Star Strider
2017-7-28
If you have R2015b or later, use splitapply:
D = load('matlab.mat');
out = D.out;
[G, ID] = findgroups([out{:,2}]);
Result = splitapply(@(x){x}, out(:,1), G');
2 个评论
Walter Roberson
2017-7-31
编辑:Walter Roberson
2017-7-31
As Star Strider indicated, findgroups requires R2015b or later.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!