Extract data from a structure

372 Ansichten (letzte 30 Tage)
jfrazie9
jfrazie9 am 26 Mär. 2018
Beantwortet: Ameer Hamza am 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.

Antworten (2)

Birdman
Birdman am 26 Mär. 2018
One approach:
A.a=A.a(:,[1 2 3 6])
where A is struct and a is its field.
  4 Kommentare
Birdman
Birdman am 26 Mär. 2018
Yes, for instance:
A.a(16:20,1)
will extract the values in column 1 from row 16 to row 20.
jfrazie9
jfrazie9 am 26 Mär. 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?

Melden Sie sich an, um zu kommentieren.


Ameer Hamza
Ameer Hamza am 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.

Kategorien

Mehr zu Filename Construction finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by