Extract data from a structure

470 visualizaciones (últimos 30 días)
jfrazie9
jfrazie9 el 26 de Mzo. de 2018
Respondida: Ameer Hamza el 21 de Abr. de 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.

Respuestas (2)

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

Iniciar sesión para comentar.


Ameer Hamza
Ameer Hamza el 21 de Abr. de 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.

Categorías

Más información sobre Filename Construction en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by