unexpected response when trying to concatenate by row after accessing cell value

1 Ansicht (letzte 30 Tage)
I am trying to access the values in certain cells then concatenate the results together by row :
% initialise cell data for example
cells = cell(5, 1);
cells{1, 1} = [5 1];
cells{2, 1} = [4 1];
cells{3, 1} = [3 1];
cells{4, 1} = [2 1];
cells{5, 1} = [1 1];
% the code im trying to run
all_cells = [cells{1:5, 1};];
the result i get: 1x10 matrix [5,1,4,1,3,1,2,1,1,1]
what i am expecting to happen:
% my current workaround
cell_1=cells{1, 1};
cell_2=cells{2, 1};
cell_3=cells{3, 1};
cell_4=cells{4, 1};
cell_5=cells{5, 1};
y_folds = [cell_1; cell_2; cell_3; cell_4; cell_5;];
the result i expected: 5x2 matrix [5,1;4,1;3,1;2,1;1,1]
i also tried to use comma instead of semi-colon as such:
all_cells = [cells{1:5, 1},];
but i get the same result as with a semi-colon: 1x10 matrix [5,1,4,1,3,1,2,1,1,1]

Akzeptierte Antwort

Stephen23
Stephen23 am 26 Nov. 2024
Bearbeitet: Stephen23 am 26 Nov. 2024
The MATLAB approach is to simply call VERTCAT instead of the concatenation operator:
C = {[5,1];[4 1];[3 1];[2 1];[1 1]};
M = vertcat(C{:})
M = 5×2
5 1 4 1 3 1 2 1 1 1
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Explanation of how this works:
The trailing semi-colon or comma in your code attempts do nothing whatsoever.

Weitere Antworten (1)

Thomas
Thomas am 26 Nov. 2024
Bearbeitet: Thomas am 26 Nov. 2024
this gives the correct answer
cells = cell(5, 1);
cells{1, 1} = [5 1];
cells{2, 1} = [4 1];
cells{3, 1} = [3 1];
cells{4, 1} = [2 1];
cells{5, 1} = [1 1];
all_cells = [cell2mat(cells(1:5, 1));];
the result: 5x2 matrix [5,1;4,1;3,1;2,1;1,1]

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by