手动构建一份直方图,计算平均每个本中包含的数据

6视图(30天)
大家好,
我试图构建一份直方图手动(不是内置函数),并计算平均每本。给一个更好的解释,我有一个矩阵,包含z位置值(zpos)在第一列和第二列的氢键(hbonds)。介于(zmin)和数据(zmax),如下代码。现在,我想计算的平均值(hbonds),落在每一本(zbin),然后阴谋反对平均(zbin)。附加的代码显示了我想做的但不给我想要的。我将感激你的帮助。
一个= [zpos, hbonds];
zmin = 0.9;
zmax = 1.25;
binsize = 0.05;
n_bins = (zmax-zmin) / binsize;
嘘(1:n_bins) = 0;
hbonds_sum (1: n_bins) = 0;
L_nbins = (0: n_bins-1);
zbin = 0.5 * binsize * L_nbins + zmin;
i = 1:长度(totalhbondsHHQ0LT35)
Ztemp = zpos(我);
地板bin_id = ((ztemp - zmin) / binsize);
嘘(bin_id) =嘘(bin_id) + 1;
hbonds_sum (bin_id) = hbonds_sum + hbonds(我);
结束
hbonds_ave = hbonds_sum /嘘;
情节(zbin hbonds_ave);

答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2023年4月4日
ztemp——zmin可以是0,和地板()的区别当然可以是0,所以你的bin_id可以0。无论你使用bin_id作为索引。
你也应该围捕(装天花板)n_bins在一般情况下。
hbonds_sum (bin_id) = hbonds_sum + hbonds(我);
在右边,hbonds_sum是 整个 向量hbonds_sum。你应该索引hbonds_sum完全相同的方式指数嘘。
1评论
哈桑Humeidat
哈桑Humeidat 2023年4月5日
编辑:哈桑Humeidat 2023年4月5日
我明白了,我有固定的问题关于bin_id,现在我用下面的代码组特定bin_id Ztemp值:
分组= accumarray (bin_id”、Ztemp”[], @ (v) {v});
我怎么还包括hbonds值与Ztemp”成bin_id吗?我应该用下面的代码吗?
grouped1 = accumarray (bin_id”(:, 2), [], @ (v) {v});

登录置评。


史蒂文的主
史蒂文的主 2023年4月4日
使用 离散化 确定每个数据点落入本 groupsummary 的意思是数据在每一本?

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!