Break a big matrix into cell array based on repetitive number in one of the matrix columns

1 回表示 (過去 30 日間)
I have a matrix of 383533*3 doubles, column 2 includes some repetitive numbers, like 2.5483e+06 here, which is similar for 600 raw. how I can break down this big matrix into cells which each cell includes 3 columns of numbers which second column is constant for each cell.

採用された回答

Star Strider
Star Strider 2016 年 7 月 24 日
This approach works:
M = randi(9, 20, 3); % Create Data
M(1:9,2) = ones(9,1)*3; % Create Data
M(10:end,2) = ones(11,1)*7; % Create Data
[U2,ia,ic] = unique(M(:,2)); % Unique Values In Column #2
rows = accumarray(ic, 1); % Lengths Uf Unique Values
Result = mat2cell(M, rows, size(M,2)); % Cell Array Of Separated Matrices

その他の回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2016 年 7 月 24 日
%------Example---------------
A(1:1000,[1 3])=randi(100,1000,2)
A(:,2)=randi(3,1000,1)
%-----The code-----------------
[ii,jj,kk]=unique(A(:,2))
out=accumarray(kk,(1:numel(kk))',[],@(x) {A(x,:)})

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by