Reorganise data in structure cells according to a set of requirements

2 vues (au cours des 30 derniers jours)
Hello, I was wondering if anyone would know how to reorganize the data I have in the attached data matrix so that it creates in a matrix of cells called SOL (for example) a structure so that:
  • The elements of each component of the cell are those that have the same value for column 4 (the original matrix is already sorted)
  • The SOL{1}.H component is the value of that column and the SOL{1}.data component is the matrix of 5 columns and as many rows as there are rows with the H value in the fourth column.
For examplo for the data.mat file, the first cell should be:
SOL{1}.H = 0;
SOL{1}.data = [1,0.160000000000000,0.130000000000000,0,0.760000000000000;
2,0.820000000000000,0.920000000000000,0,0.530000000000000;
3,0.630000000000000,0.210000000000000,0,0.920000000000000;
4,0.500000000000000,0.0400000000000000,0,0.390000000000000;
5,0.800000000000000,0.920000000000000,0,0.310000000000000;
6,0.140000000000000,0.0600000000000000,0,0.630000000000000;
7,0.690000000000000,0.0100000000000000,0,0.540000000000000;
8,0.790000000000000,0.0700000000000000,0,0.510000000000000;
9,0.660000000000000,0.780000000000000,0,0.800000000000000;
10,0.840000000000000,0.0900000000000000,0,0.0400000000000000;
11,0.590000000000000,0.0500000000000000,0,0.940000000000000;
12,0.0100000000000000,0.430000000000000,0,0.930000000000000;
13,0.640000000000000,0.530000000000000,0,0.980000000000000;
14,0.0100000000000000,0.380000000000000,0,0.610000000000000;
15,0.620000000000000,0.0500000000000000,0,0.860000000000000;
16,0.350000000000000,0.550000000000000,0,0.950000000000000;
17,0.120000000000000,0.450000000000000,0,0.290000000000000;
18,0.290000000000000,0.370000000000000,0,0.170000000000000;
19,0.630000000000000,0.630000000000000,0,0.240000000000000;
20,0.860000000000000,0.0500000000000000,0,0.290000000000000;
21,0.110000000000000,0.520000000000000,0,0.210000000000000;
22,0.580000000000000,0.690000000000000,0,0.640000000000000;
23,0.780000000000000,0.970000000000000,0,0.170000000000000;
24,0.780000000000000,0.380000000000000,0,0.600000000000000;
25,0.290000000000000,0.330000000000000,0,0.220000000000000;
26,0.0900000000000000,0.780000000000000,0,0.190000000000000;
27,0.820000000000000,0.280000000000000,0,0.560000000000000;
28,0.160000000000000,0.180000000000000,0,0.550000000000000;
29,0.620000000000000,0.730000000000000,0,0.720000000000000;
30,0.260000000000000,0.0200000000000000,0,0.850000000000000;
31,0.120000000000000,0.380000000000000,0,0.500000000000000;
32,0.180000000000000,0.380000000000000,0,0.960000000000000;
33,0.550000000000000,0.610000000000000,0,0.860000000000000;
34,0.350000000000000,0.370000000000000,0,0.610000000000000;
35,0.390000000000000,0.280000000000000,0,0.730000000000000;
36,0.330000000000000,0.800000000000000,0,0.290000000000000;
37,0.260000000000000,0.830000000000000,0,0.180000000000000;
38,0.960000000000000,0.0700000000000000,0,0.630000000000000;
39,0.650000000000000,0.500000000000000,0,0.880000000000000;
40,0.570000000000000,0.730000000000000,0,0.840000000000000;
41,0.0700000000000000,0.340000000000000,0,0.210000000000000;
42,0.710000000000000,0.0300000000000000,0,0.120000000000000;
43,0.300000000000000,0.800000000000000,0,0.190000000000000;
44,0.610000000000000,0.690000000000000,0,0.180000000000000;
45,0.100000000000000,0.560000000000000,0,0.180000000000000;
46,0.870000000000000,0.760000000000000,0,0.470000000000000;
47,0.480000000000000,0.900000000000000,0,0.590000000000000;
48,0.570000000000000,0.920000000000000,0,0.0200000000000000;
49,0.330000000000000,0.450000000000000,0,0.0100000000000000;
50,0.850000000000000,0.130000000000000,0,0.680000000000000;
51,0.780000000000000,0.480000000000000,0,0.0900000000000000]
Thank you so much for all

Réponse acceptée

Alejandro Fernández
Alejandro Fernández le 17 Nov 2020
Modifié(e) : Alejandro Fernández le 17 Nov 2020
Thanks for everything but finally I knew how to solve it.
B = unique(data(:,4));
SOL = cell(length(B),1);
for i = 1 : length(B)
SOL{i}.H = B(i);
SOL{i}.data = data(data(:,4)==B(i),:);
end

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by