How to extract only certain values from a field in a structure array?

6 views (last 30 days)
Hello, I am trying to output only certain values from a field in a structure array called Cells. The values I want are in the pos field, and I only want the value when the values in the Type field are equal to 1, and thus when P is 1. This is my code so far. It works in the command window and gives me all the variables, when I do not assign Cells(P).pos to a variable. But my problem is that when I assign Cells(P).pos to a variable it only gives me one value, versus for all the values P is true. How do I get all the values and still assign them to a variable? I tried to preallocate prof as an empty matrix but that didn't work either. Thanks!
P=[Cells.Type]==1;
Prof= Cells(P).pos;

Accepted Answer

Ahmet Cecen
Ahmet Cecen on 8 May 2016
Edited: Ahmet Cecen on 8 May 2016
I am not aware of a way to do this without a for loop. If you run:
P=[Cells.Type]==1
without the semi colon, you will see every element in the array correctly outputs the type check, yet they are not being captured as an array. The following should work:
for i = 1:length(Cells)
if Cells(i).Type == 1
Prof(i) = Cells(i).pos;
end
end
  3 Comments
Ahmet Cecen
Ahmet Cecen on 8 May 2016
ii = 0;
for i = 1:length(Cells)
if Cells(i).Type == 1
ii = ii + 1;
Prof(ii) = Cells(i).pos;
end
end
OR following your idea, deleting the zero entries after the fact:
for i = 1:length(Cells)
if Cells(i).Type == 1
Prof(i) = Cells(i).pos;
end
end
Prof (Prof==0) = [];

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 8 May 2016
P=[Cells.Type]==1;
Prof= vertcat(Cells(P).pos);

Categories

Find more on Matrices and Arrays 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!