0
値0,1,2,3だけで構成された1000の配列があるとしましょう。私がしたいことは、他の値の海で奇妙な値を取り除くことです。 0,0,0,0,0,1,0,0,0,0 - > 0,0,0,0,0,0,0,0,0,0。私はいつも0,1,2,3の値を返さなければならないので、単純な移動平均は実際には機能しません。したがって、0,3,0 - > 1を平均化することは間違っています。 私は仕事をしているように見えるこれを思いついたが、私はそれをより効率的かつきれいにする方法があるのだろうかと思っていた。 ImageJマクロ用です。固定された結果セットで効率的に配列を平滑化する
r = 7; //window length
for(j=r; j<lengthOf(armsPosition)-r;j++){
count0 = 0; count1 = 0; count2=0;count3 = 0;
for(m = j - r/2; m <= j + r/2; m++){
if(armsPosition[m] == 0)
count0++;
else if(armsPosition[m] == 1)
count1++;
else if(armsPosition[m] == 2)
count2++;
else
count3++;
}
if(count0 >= count1 && count0 >= count2 && count0 >= count3)
armsPositionA[j]=0;
else if(count1 > count0 && count1 > count2 && count1 > count3)
armsPositionA[j]=1;
else if(count2 > count0 && count2 > count1 && count2 > count3)
armsPositionA[j]=2;
else
armsPositionA[j]=3;
}
おかげで、
ありがとうございました。私はマクロ全体をスクリプトや完全なpledgeプラグインに変更することを考えていますが、それはかなりの学習時間を必要としますが、実際には瞬間がありません。 – hadroque