Create a Matrix from different ccella array.

조회 수: 1 (최근 30일)
Fredic
Fredic 2020년 7월 24일
댓글: madhan ravi 2020년 7월 24일
I have a cell array "data" 1x3 cell, each cell having different number of elements with 4 columns. for example data= [13252*4 double];[1516*4] double;[1244*4]double.
Now, I need a matrix which has maximum number of columns equal to 12 (sum of single columns) and rows equal to the maximum number of columns of all the cells. and I want to insert Nan when there is not value.
Thank you so much!!!
  댓글 수: 1
Fredic
Fredic 2020년 7월 24일
I try this code
nCol = cellfun('size', data,1);
nRow = numel(data) ;
Output = NaN(max(nCol), nRow);
for iA = 1:numel(data)
idx = (iA - 1) + 1;
Output(1:nCol(iA), idx:idx+1) = data{iA};
end
But then appers this error
Unable to perform
assignment because the
size of the left side is
1352-by-2 and the size of
the right side is
1352-by-4.
Error in Fitting_function
(line 44)
Output(1:nCol(iA),
idx:idx+1) = data{iA};

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

채택된 답변

KSSV
KSSV 2020년 7월 24일
A{1} = rand(10,4) ;
A{2} = rand(5,4) ;
A{3} = rand(6,4) ;
% Get length of each cell
L = cellfun(@length,A) ;
for i = 1:length(L)
if size(A{i},1) < max(L)
T = NaN(max(L),4) ;
T(1:L(i),:) = A{i} ;
A{i} = T ;
end
end
iwant = [A{:}] ;

추가 답변 (1개)

madhan ravi
madhan ravi 2020년 7월 24일
편집: madhan ravi 2020년 7월 24일
m = cellfun(@size, data, 'un', 0);
M = max(cat(1, m{:}));
Data = cellfun(@(x) [x; nan(M(1) - size(x, 1), M(2))], data, 'un', 0)
  댓글 수: 9
Fredic
Fredic 2020년 7월 24일
no perfect
madhan ravi
madhan ravi 2020년 7월 24일
Lol

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

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by