How to extract only certain values from a field in a structure array?
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rasha Bara
el 8 de Mayo de 2016
Comentada: Rasha Bara
el 8 de Mayo de 2016
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 comentarios
Respuesta aceptada
Ahmet Cecen
el 8 de Mayo de 2016
Editada: Ahmet Cecen
el 8 de Mayo de 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 comentarios
Ahmet Cecen
el 8 de Mayo de 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) = [];
Más respuestas (1)
Ver también
Categorías
Más información sobre Matrices and Arrays 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!