How to extract only certain values from a field in a structure array?
7 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Ahmet Cecen
2016-5-8
编辑:Ahmet Cecen
2016-5-8
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 个评论
Ahmet Cecen
2016-5-8
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) = [];
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!