How to define the variable which contain multiple double data?
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello, I am not familar with MATLAB and I need advice from many experienced people.
I have multiple double arrays in my A structure (11x1 structure).
A structure have [?x2 double] format and I want to sort with 2nd column of all [A(1),A(2), ... A(11)] and merge all that sorted data in one variable.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/232563/image.png)
I did it 1 by 1 and I got a data which I want, but it is such a long code and stupid way.
Does anyone have an idea how to summarize my code?
And my final goal is to define these 2 coulmns by x and y coordinates.
% Select n-th row of A and make double array and sort with 2nd column
A1 = vertcat(A(1).Groups); % size(A1) = 5 2
A1_1 = sortrows(A1,[2]);
A2 = vertcat(A(2).Groups); % size(A2) = 8 2
A2_1 = sortrows(A2,[2]);
A3 = vertcat(A(3).Groups); % size(A3) = 9 2
A3_1 = sortrows(A3,[2]);
A4 = vertcat(A(4).Groups); % size(A4) = 10 2
A4_1 = sortrows(A4,[2]);
A5 = vertcat(A(5).Groups); % size(A5) = 10 2
A5_1 = sortrows(A5,[2]);
A6 = vertcat(A(6).Groups); % size(A6) = 10 2
A6_1 = sortrows(A6,[2]);
A7 = vertcat(A(7).Groups); % size(A7) = 10 2
A7_1 = sortrows(A7,[2]);
A8 = vertcat(A(8).Groups); % size(A8) = 10 2
A8_1 = sortrows(A8,[2]);
A9 = vertcat(A(9).Groups); % size(A9) = 8 2
A9_1 = sortrows(A9,[2]);
A10 = vertcat(A(10).Groups); % size(A10) = 6 2
A10_1 = sortrows(A10,[2]);
A11 = vertcat(A(11).Groups); % size(A11) = 1 2
A11_1 = sortrows(A11,[2]);
% Merge all sorted A(n) in one variable
CenA1 = [A1_1;A2_1;A3_1;A4_1;A5_1;A6_1;A7_1;A8_1;A9_1;A10_1;A11_1];
% Separate these sorted coulmns by x and y coordinate
xcen1 = CenA1(:,1);
ycen1 = CenA1(:,2);
0 commentaires
Réponse acceptée
dpb
le 4 Août 2019
You were almost there...since each element in the struct array has just 2 columns, they can be catenated vertically--so convert the struct to an array like you were doing except do it globally...
XY=vertcat(A.Groups);
Now if it is needed to actually sort within the individual arrays, use a loop to sort first...unfortunately, structfun won't work on a struct array and arrayfun expects every array to be same size so have to write the explicit loop here...but that's not hard--
for i=1:numel(A)
A(i).Groups=sortrows(A(i).Groups,2);
end
and first, then catenate the result.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!