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.
댓글 수: 0
채택된 답변
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
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 Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!