Filter löschen
Filter löschen

How can I convert cell array to an arrary matrix?

4 Ansichten (letzte 30 Tage)
Abdullah Türk
Abdullah Türk am 7 Jan. 2024
Bearbeitet: Stephen23 am 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.

Akzeptierte Antwort

Dyuman Joshi
Dyuman Joshi am 7 Jan. 2024
Verschoben: Dyuman Joshi am 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 Kommentare
Dyuman Joshi
Dyuman Joshi am 8 Jan. 2024
You're welcome!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

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

Melden Sie sich an, um zu kommentieren.


Voss
Voss am 7 Jan. 2024
Bearbeitet: Voss am 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 Kommentar
Abdullah Türk
Abdullah Türk am 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.

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by