Extract data from a structure

471 vues (au cours des 30 derniers jours)
jfrazie9
jfrazie9 le 26 Mar 2018
I have a "1x1 struct" with 2 fields. One of the fields is data and is a 7909x10 double, while the other field is textdata that is a 1x1 cell containing the header of the output file.
I do not know how to make it so that I only have the data field that is a 7909x10 double. From there I only need columns 1,2,3 and 6 from those 10 columns and would like to delete the other 6 columns to make a new data structure.

Réponses (2)

Birdman
Birdman le 26 Mar 2018
One approach:
A.a=A.a(:,[1 2 3 6])
where A is struct and a is its field.
  4 commentaires
Birdman
Birdman le 26 Mar 2018
Yes, for instance:
A.a(16:20,1)
will extract the values in column 1 from row 16 to row 20.
jfrazie9
jfrazie9 le 26 Mar 2018
My mistake I was unclear, the first column is the pathID numbered 1-55, where there are approximately 142 rows with pathID = 1, another 142 with pathID = 2. How do I sort based on the value in the first column would be a better question?

Connectez-vous pour commenter.


Ameer Hamza
Ameer Hamza le 21 Avr 2018

From your questions and comments, the following solution will work for you. Suppose you original struct is A and you want to create another struct object B by deleting some columns of A and sorting rows according to column 1.

B = A;
B.data = B.data(:, [1 2 3 6]); % delete columns of data
[~, ind] = sort(B.data(:,1)); % get sorted indexes for column 1
B.data = B.data(ind, :); % now sort all rows of data matrix.

This will give you required struct B.

Catégories

En savoir plus sur Filename Construction 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!

Translated by