How to extract only certain values from a field in a structure array?
6 views (last 30 days)
Show older comments
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;
0 Comments
Accepted Answer
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
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) = [];
More Answers (1)
See Also
Categories
Find more on Whos 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!