Create a Matrix from different ccella array.

1 vue (au cours des 30 derniers jours)
Fredic
Fredic le 24 Juil 2020
Commenté : madhan ravi le 24 Juil 2020
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 commentaire
Fredic
Fredic le 24 Juil 2020
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};

Connectez-vous pour commenter.

Réponse acceptée

KSSV
KSSV le 24 Juil 2020
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{:}] ;

Plus de réponses (1)

madhan ravi
madhan ravi le 24 Juil 2020
Modifié(e) : madhan ravi le 24 Juil 2020
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 commentaires
Fredic
Fredic le 24 Juil 2020
no perfect
madhan ravi
madhan ravi le 24 Juil 2020
Lol

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by