How to use histcounts with struct array?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
Image Analyst
2017 年 12 月 24 日
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().
採用された回答
Jos (10584)
2017 年 12 月 24 日
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)) ;
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!