在Matlab中,我有一个向量Muen,我想通过将其分成不同长度的 bin 来减小它的大小。该向量有一些需要高精度 bin 的值和许多大致相等的值,可以收集到最大为几百个值的 bin 中。我还需要知道进入新 bin 的所有旧 bin 的索引,以缩短 sencod vector fluence。
目标是通过使用由Meun确定的不同大小的 bin来加速两个向量 sum( fluence .* Muen ) 的求和,并在向量乘法之前对新 bin中的流量求和。为此,我尝试使用
edges=[min(Muen):0.0001:Muen(13),Muen(12:-1:1));
[N,bin]=histc(*Muen*,edges)
问题是如何制作向量边缘,因为Muen的最大值和最小值之间存在很大差异,而其他值之间存在很小的差异。有没有办法根据导数Muen制作边缘的步骤?
为了获得更短的Muen版本,就像
MuenShort=N.*edges;
但它没有正确退出(可能是边缘故障),有什么建议吗?
我也不太明白bin如何给出进入新 bin 的值的索引?
澄清:我想做的是从向量m或Muen中取出大致相等的元素并用一个元素替换 ,同时跟踪哪个元素进入新向量n或MuenShort的索引。例如 {m1}->n1,(1), {m2}->n2,(2), {m3,m4}-> m3=m4=n3,(3,4),{m5,m6,m7,m8 }-> m5=m6=m7=m8=n4,{5,6,7,8}... 其中 n1>>n2 但 n3 和 n4 之间的差异可能不会那么大。每个 n 元素中的 m 元素数量应由彼此大致相等的 m 元素数量决定,或者更确切地说,它们位于两个限制之间。所以 bin 的大小应该在一个元素到几百个元素之间变化。
然后我想使用索引来制作影响力向量更短
fluenceShort(1:length(MuenShort))= [sum(fluence(1)),sum(fluence(2)),sum(fluence(3,4)),sum(fluence(5,6,7,8)) ...]; 目标=总和(fluenceShort.*MuenShort)
有没有办法在 Matlab 中实现这一点?