এটি কার্যকর করার দুটি উপায় আছে যা আমি সাধারণত ব্যবহার করি। আমি সবসময় রিয়েলটাইম ডেটা নিয়ে কাজ করি, তাই এটি ধারাবাহিক ইনপুট ধরে নেয়। এখানে কয়েকটি সিউডো কোড রয়েছে:
প্রশিক্ষণযোগ্য মিনম্যাক্স ব্যবহার করা:
define function peak:
// keeps the highest value it has received
define function trough:
// keeps the lowest value it has received
define function calibrate:
// toggles whether peak() and trough() are receiving values or not
define function scale:
// maps input range [trough.value() to peak.value()] to [0.0 to 1.0]
এই ফাংশনটির প্রয়োজন হয় যে আপনি হয় প্রাথমিক প্রশিক্ষণ পর্ব (ব্যবহার করে calibrate()
) সম্পাদন করুন অথবা নির্দিষ্ট বিরতিতে বা নির্দিষ্ট শর্ত অনুসারে আপনি পুনরায় প্রশিক্ষণ নিতে পারেন। উদাহরণস্বরূপ, এই জাতীয় ফাংশনটি কল্পনা করুন:
define function outBounds (val, thresh):
if val > (thresh*peak.value()) || val < (trough.value() / thresh):
calibrate()
শিখর এবং গর্ত সাধারণত মানগুলি গ্রহণ করে না, তবে যদি outBounds()
বর্তমানের শিখর থেকে 1.5 গুণ বেশি বা বর্তমান গর্তের তুলনায় 1.5 ভাগের চেয়ে কম এমন কোনও মান পাওয়া যায়, তবে calibrate()
ফাংশনটি স্বয়ংক্রিয়ভাবে পুনরায় ক্যালিব্রেট করার অনুমতি দেয়।
একটি historicalতিহাসিক মিনম্যাক্স ব্যবহার করে:
var arrayLength = 1000
var histArray[arrayLength]
define historyArray(f):
histArray.pushFront(f) //adds f to the beginning of the array
define max(array):
// finds maximum element in histArray[]
return max
define min(array):
// finds minimum element in histArray[]
return min
define function scale:
// maps input range [min(histArray) to max(histArray)] to [0.0 to 1.0]
main()
historyArray(histArray)
scale(min(histArray), max(histArray), histArray[0])
// histArray[0] is the current element