- convert them to a single vector (row or column)
- equate the number of columns in all matrices and fill the missing elements with NaN or another missing value indicator. Then concatenate the matrices vertically
- equate the number of rows in all matrices, fill the missing elements, and concatenate horizontally
- equate the number of rows and columns in all matrices, fill the missing elements, and concatenate in a 3D array.
how to convert cell to double
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Farshid Daryabor
il 24 Gen 2020
Modificato: Adam Danz
il 19 Gen 2022
I have problem to convert cell (attached file) to double, thanks in advance for any help.
0 Commenti
Risposta accettata
Adam Danz
il 24 Gen 2020
Modificato: Adam Danz
il 19 Gen 2022
There are 12 elements in your cell array. Each element is a matrix but of different sizes.
OUT =
1×12 cell array
Columns 1 through 7
{73×6 double} {1581×12 double} {105×6 double} {105×6 double} {113×6 double} {264×6 double} {98×7 double}
Columns 8 through 12
{98×6 double} {98×7 double} {88×6 double} {994×3 double} {194×6 double}
If you want to combine all elements of your cell array some common options are
% OUT is the 1xn cell array where each element contains a matrix of different sizes.
% METHOD: put all values into a column vector
% Transpose the result for a row vector
m = cell2mat(cellfun(@(c){c(:)},OUT)');
% METHOD: Concatenate matrices vertically, fill missing columns with NaN.
maxNumCol = max(cellfun(@(c) size(c,2), OUT)); % max number of columns
mPad = cell2mat(cellfun(@(c){padarray(c,[0,maxNumCol-size(c,2)],NaN,'Post')},OUT)');
% METHOD: Concatenate matrices horizontally, fill missing rows with NaN.
maxNumRow = max(cellfun(@(c) size(c,1), OUT)); % max number of rows
mPad = cell2mat(cellfun(@(c){padarray(c,[maxNumRow-size(c,1),0],NaN,'Post')},OUT));
% METHOD: Concatenate matrices along 3rd dimension, fill missing rows with NaN.
maxMatSz = max(cell2mat(cellfun(@(c) {size(c)}, OUT)'),[],1); % [max rows, max cols]
cPad = cellfun(@(c){padarray(c,[maxMatSz(1)-size(c,1),maxMatSz(2)-size(c,2)],NaN,'Post')},OUT);
mPad = cat(3, cPad{:});
2 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!