How can I convert cell array to an arrary matrix?

2 vues (au cours des 30 derniers jours)
Abdullah Türk
Abdullah Türk le 7 Jan 2024
Modifié(e) : Stephen23 le 9 Jan 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.

Réponse acceptée

Dyuman Joshi
Dyuman Joshi le 7 Jan 2024
Déplacé(e) : Dyuman Joshi le 7 Jan 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 commentaires
Abdullah Türk
Abdullah Türk le 8 Jan 2024
Thank you Dyuman Joshi. It works.
Dyuman Joshi
Dyuman Joshi le 8 Jan 2024
You're welcome!

Connectez-vous pour commenter.

Plus de réponses (2)

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

Connectez-vous pour commenter.


Voss
Voss le 7 Jan 2024
Modifié(e) : Voss le 7 Jan 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 commentaire
Abdullah Türk
Abdullah Türk le 8 Jan 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.

Connectez-vous pour commenter.

Catégories

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

Produits


Version

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by