Extract data from a structure

499 views (last 30 days)
jfrazie9
jfrazie9 on 26 Mar 2018
Answered: Ameer Hamza on 21 Apr 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.

Answers (2)

Birdman
Birdman on 26 Mar 2018
One approach:
A.a=A.a(:,[1 2 3 6])
where A is struct and a is its field.
  4 Comments
Birdman
Birdman on 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 on 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?

Sign in to comment.


Ameer Hamza
Ameer Hamza on 21 Apr 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.

Categories

Find more on Filename Construction in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!