Matlabには、異なる長さのビンに分割してサイズを縮小したいベクトルMuenがあります。このベクトルには、高精度のビンが必要ないくつかの値と、ほぼ同じで最大数百の値のサイズのビンに収集できる多くの値があります。また、sencod ベクトルフルエンスを短縮するために、新しいビンに入るすべての古いビンのインデックスを知る必要があります。
目標は、 Meunによって決定された異なるサイズのビンを使用して2 つのベクトル sum(fluence .* Muen ) の合計を高速化し、ベクトル乗算の前にフルエンスの合計を新しいビンに入れることです。このために私は使用しようとします
edges=[min(Muen):0.0001:Muen(13),Muen(12:-1:1));
[N,bin]=histc(*Muen*,edges)
Muenの最大値と最小値の差が大きく、それ以外の値の差が小さいため、ベクトルのエッジをどのように作成するかが問題です。導関数Muenに応じてエッジのステップを作成する方法はありますか?
Muenの短いバージョンを取得するには、次のようになります
MuenShort=N.*edges;
しかし、それはうまくいきませんでした(エッジの障害である可能性があります)、何か提案はありますか?
また、ビンが新しいビンに入る値のインデックスをどのように与えるか、実際にはわかりませんか?
明確化:私がやりたいのは、ベクトルmまたはMuenから、ほぼ等しい要素を取り、 を 1 つの要素に置き換え、同時に要素が新しいベクトル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 要素の数は、互いにほぼ等しい、または 2 つの制限の間にある m 要素の数によって決定する必要があります。そのため、ビンのサイズは 1 要素から数百要素の間で変化するはずです。次に、インデックスを使用してフルエンス
を作成したいベクトルが短い
FluenceShort(1:length(MuenShort))= [sum(fluence(1)),sum(fluence(2)),sum(fluence(3,4)),sum(fluence(5,6,7,8)) ...]; ゴール=合計(fluenceShort.*MuenShort)
これを Matlab で実装する方法はありますか?