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

2 vues (au cours des 30 derniers jours)
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]

Réponse acceptée

Stephen23
Stephen23 le 26 Nov 2024
Modifié(e) : Stephen23 le 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.

Plus de réponses (1)

Thomas
Thomas le 26 Nov 2024
Modifié(e) : Thomas le 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]

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by