【发布时间】:2013-08-10 18:41:18
【问题描述】:
在 Matlab 我有一个向量 Muen 我想通过将它分成不同长度的 bin 来减小它的大小。该向量有一些需要高精度 bin 的值和许多大致相等的值,可以收集到最大为几百个值的 bin 中。 我还需要知道进入新 bin 的所有旧 bin 的索引,以缩短 sencod 向量 fluence。
目标是通过使用由 Meun 确定的不同大小的 bin 来加速两个向量 sum(fluence.*Muen) 的求和并在向量乘法之前将 fluence 的总和放入新的 bin 中。 为此,我尝试使用
edges=[min(Muen):0.0001:Muen(13),Muen(12:-1:1));
[N,bin]=histc(*Muen*,edges)
问题是如何制作向量边,因为Muen的最大值和最小值之间有很大的差异,而其他值之间的差异很小。有没有办法根据导数Muen制作edges的步骤?
为了获得 Muen 的较短版本,应该是这样的
MuenShort=N.*edges;
但它没有正确退出(可能是 edges 中的错误),有什么建议吗?
我也不太明白 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 的大小应该在一个元素到几百个元素之间变化。
然后我想使用索引来使 fluence 向量更短
fluenceShort(1:length(MuenShort))= [sum(fluence(1)),sum(fluence(2)),sum(fluence(3,4)),sum(fluence(5,6,7, 8))...]; 目标=sum(fluenceShort.*MuenShort)
有没有办法在 Matlab 中实现这个?
【问题讨论】:
-
请让您的问题更清楚。您正在谈论 bin 并使用 histc,因此您可能想要计算一些直方图,但您从未这么说。
Muen是递减排序的吗?由于您似乎向后使用它来创建边缘...