How to use histcounts with struct array?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Olaf van Buul
el 24 de Dic. de 2017
Comentada: Olaf van Buul
el 26 de Dic. de 2017
Hello,
I have a problem, I want to do this:
y = 10e-9*rand(270,1);
bins=linspace(0,10e-9,11);
[N,bincounts, binidx] = histcounts(y, bins);
So far no problem, however the value y is in my case the z-coordinate of a struct:
particle(i).coord(1:3);
I can get with a loop these values of particle(i).coord(3) in an array that I can use for input of histcounts.
But for performance reason I want direct access to the structure? Is this possible? I Googled and I found:
<https://nl.mathworks.com/help/matlab/matlab_prog/access-data-in-a-structure-array.html >
"You can index into part of a field only when you refer to a single element of a structure array. MATLAB® does not support statements such as S(1:2).X(1:50,1:80), which attempts to index into a field for multiple elements of the structure."
So I hope someone can help me.
Thanks for your time.
Regards,
Olaf
This is my first mail in this forum. However, I've read and learned a lot from it :)
1 comentario
Image Analyst
el 24 de Dic. de 2017
I fixed your formatting. You can learn how to do it yourself here http://www.mathworks.com/matlabcentral/answers/13205#answer_18099
I assume you wanted to know how to vectorize and use handy built in functions like Jos showed you below, rather than for performance reasons. For a microscopic array with only 270 elements, no performance difference will be human noticeable at all between using a for loop and using arrayfun().
Respuesta aceptada
Jos (10584)
el 24 de Dic. de 2017
Welcome to the forum!
You can use a loop or arrayfun to extract the scalar value, like:
y = arrayfun(@(k) particle(k).coord(3), 1:numel(particle)) ;
1 comentario
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures 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!