Azzera filtri
Azzera filtri

How can I convert cell array to an arrary matrix?

4 visualizzazioni (ultimi 30 giorni)
Hi,
I have a cell array and I want to ceovert it to an array matrix.
Can I convert this cell array as follows:
array_matrix = [6 11 20 12 15 19 12 4 18 16 3 13 1 14 7 8 5 10 9 17]
Is there a way to do this?
My cell matrix is attached.

Risposta accettata

Dyuman Joshi
Dyuman Joshi il 7 Gen 2024
Spostato: Dyuman Joshi il 7 Gen 2024
in = load('cell_array.mat')
in = struct with fields:
ans: {[4×1 double] [15] [2×1 double] [4] [18] [16] [3] [2×1 double] [14] [2×1 double] [3×1 double] [17]}
x = in.ans;
out = vertcat(x{:}).'
out = 1×20
6 11 20 2 15 19 12 4 18 16 3 13 1 14 7 8 5 10 9 17

Più risposte (2)

Sulaymon Eshkabilov
Sulaymon Eshkabilov il 7 Gen 2024
This is how it can be attained:
A = load('cell_array.mat').ans;
for ii = 1:numel(A)
H = A{ii};
K{ii} = cat(1, H(:)');
end
array_matrix = (horzcat(K{:}))
array_matrix = 1×20
6 11 20 2 15 19 12 4 18 16 3 13 1 14 7 8 5 10 9 17
  3 Commenti

Accedi per commentare.


Voss
Voss il 7 Gen 2024
Modificato: Voss il 7 Gen 2024
@Abdullah Türk: If you know that all the cells of your cell array contain column vectors of the same class (as is the case in the variable ans in the posted mat file), then @Dyuman Joshi's approach will work:
x = load('cell_array.mat').ans;
out = vertcat(x{:}).'
out = 1×20
6 11 20 2 15 19 12 4 18 16 3 13 1 14 7 8 5 10 9 17
Alternatively, if the cells can contain arrays of any shape and dimensionality (still of the same class), then you'll need to reshape them before doing the vertical concatenation (vertcat). For example:
x = load('cell_array.mat').ans;
x_col = cellfun(@(m)reshape(m,[],1),x,'UniformOutput',false);
out = vertcat(x_col{:}).'
out = 1×20
6 11 20 2 15 19 12 4 18 16 3 13 1 14 7 8 5 10 9 17
  1 Commento
Abdullah Türk
Abdullah Türk il 8 Gen 2024
Voss, thank you very much for your detailed information.
The following code is not work. I think this has something to do with the MATLAB version I use. I'm sure the code you wrote works, but I think it didn't work in my version.
x = load('cell_array.mat').ans;
Thanks a lot again.

Accedi per commentare.

Prodotti


Release

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by