বিনিং কার্যাদি সম্পর্কে শ্রদ্ধার সাথে আমি এখনও অবধি প্রদত্ত ফাংশনগুলির ফলাফল আশা করিনি। যথা, যদি আমার দ্বিবিধটি 0.001 হয় তবে এই ফাংশনগুলি 0.005 পয়েন্টে বিনগুলি কেন্দ্র করছিল, আমি বাইন 0.001 সীমানায় কেন্দ্রীভূত করা আরও স্বজ্ঞাত বলে মনে করি।
অন্য কথায়, আমি চাই
Bin 0.001 contain data from 0.0005 to 0.0014
Bin 0.002 contain data from 0.0015 to 0.0024
...
আমি যে বিনিং কাজটি নিয়ে এসেছি তা হ'ল
my_bin(x,width) = width*(floor(x/width+0.5))
এখানে দেওয়া কিছু বিন ফাংশনগুলির সাথে এটির তুলনা করার জন্য এখানে একটি স্ক্রিপ্ট রয়েছে:
rint(x) = (x-int(x)>0.9999)?int(x)+1:int(x)
bin(x,width) = width*rint(x/width) + width/2.0
binc(x,width) = width*(int(x/width)+0.5)
mitar_bin(x,width) = width*floor(x/width) + width/2.0
my_bin(x,width) = width*(floor(x/width+0.5))
binwidth = 0.001
data_list = "-0.1386 -0.1383 -0.1375 -0.0015 -0.0005 0.0005 0.0015 0.1375 0.1383 0.1386"
my_line = sprintf("%7s %7s %7s %7s %7s","data","bin()","binc()","mitar()","my_bin()")
print my_line
do for [i in data_list] {
iN = i + 0
my_line = sprintf("%+.4f %+.4f %+.4f %+.4f %+.4f",iN,bin(iN,binwidth),binc(iN,binwidth),mitar_bin(iN,binwidth),my_bin(iN,binwidth))
print my_line
}
এবং এখানে আউটপুট
data bin() binc() mitar() my_bin()
-0.1386 -0.1375 -0.1375 -0.1385 -0.1390
-0.1383 -0.1375 -0.1375 -0.1385 -0.1380
-0.1375 -0.1365 -0.1365 -0.1375 -0.1380
-0.0015 -0.0005 -0.0005 -0.0015 -0.0010
-0.0005 +0.0005 +0.0005 -0.0005 +0.0000
+0.0005 +0.0005 +0.0005 +0.0005 +0.0010
+0.0015 +0.0015 +0.0015 +0.0015 +0.0020
+0.1375 +0.1375 +0.1375 +0.1375 +0.1380
+0.1383 +0.1385 +0.1385 +0.1385 +0.1380
+0.1386 +0.1385 +0.1385 +0.1385 +0.1390