Borrar filtros
Borrar filtros

How can I convert cell array to an arrary matrix?

4 visualizaciones (últimos 30 días)
Abdullah Türk
Abdullah Türk el 7 de En. de 2024
Editada: Stephen23 el 9 de En. de 2024
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.

Respuesta aceptada

Dyuman Joshi
Dyuman Joshi el 7 de En. de 2024
Movida: Dyuman Joshi el 7 de En. de 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
  3 comentarios
Abdullah Türk
Abdullah Türk el 8 de En. de 2024
Thank you Dyuman Joshi. It works.
Dyuman Joshi
Dyuman Joshi el 8 de En. de 2024
You're welcome!

Iniciar sesión para comentar.

Más respuestas (2)

Sulaymon Eshkabilov
Sulaymon Eshkabilov el 7 de En. de 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 comentarios
Walter Roberson
Walter Roberson el 8 de En. de 2024
temp = load('cell_array.mat');
A = temp.ans;
Abdullah Türk
Abdullah Türk el 8 de En. de 2024
Thank you Walter. It work now.

Iniciar sesión para comentar.


Voss
Voss el 7 de En. de 2024
Editada: Voss el 7 de En. de 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 comentario
Abdullah Türk
Abdullah Türk el 8 de En. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by