MATLAB: Cell matrix

arraycellmatrix

Hi there, I have a 37000 x 4 cell array. Columns are like for eg,
'01/02/2012 00:00:01' 'BEST_BID' 4.25000000000000 90
'01/02/2012 00:00:01' 'BEST_ASK' 4.26000000000000 90
'01/02/2012 00:00:01' 'BEST_BID' 4.25000000000000 90
'01/02/2012 00:00:01' 'BEST_ASK' 4.26000000000000 90
'01/02/2012 00:00:16' 'BEST_BID' 4.24000000000000 90
'01/02/2012 00:00:16' 'BEST_ASK' 4.26000000000000 90
'01/02/2012 00:00:17' 'BEST_BID' 4.25000000000000 90
'01/02/2012 00:00:17' 'BEST_ASK' 4.26000000000000 90
Ok now I want to create 2 matrices (separation) one with BEST_BID and one with BEST_ASK. Additionally they both would need to be in order with respect to their times in the first column and maintain the 3rd and 4th column information

Best Answer

Here is one of many ways to do it. This is more geared toward maximum readability than maximum efficiency.
[tf,index] = ismember(CA(:,2),{'BEST_BID','BEST_ASK'});
bidArray = CA(index==1,:);
askArray = CA(index==2,:);
bidArray = sortrows(bidArray,1);
askArray = sortrows(askArray,1);
% % I didn't think sortrows worked on cell arrays, but the above seems to work. If not, use this:
% [~,bidTimeOrder] = sort(bidArray(:,1));
% [~,askTimeOrder] = sort(askArray(:,1));
% bidArray = bidArray(bidTimeOrder,:);
% askArray = askArray(askTimeOrder,:);