দুটি একমাত্রিক সিকোয়েন্সের ডিসক্রিট লিনিয়ার কনভলিউশন ফেরত পाने के लिए পাইথন নামপাই-এর numpy.convolve() মেথড ব্যবহার করা হয়। কনভলিউশন অপারেটর প্রায়শই সিগন্যাল প্রসেসিং-এ দেখা যায়, যেখানে এটি একটি লিনিয়ার টাইম-ইনভেরিয়েন্ট সিস্টেমের সিগন্যালের ওপর প্রভাব মডেল করে। প্রোবাবিলিটি থিওরিতে, দুটি স্বাধীন র্যান্ডম ভেরিয়েবলের যোগফল তাদের বিতরণের কনভলিউশন অনুযায়ী বিতরণ করা হয়। যদি v, a-র চেয়ে দীর্ঘ হয়, তবে গণনার আগে অ্যারে দুটি বদলানো হয়।
মেথডটি a এবং v-এর ডিসক্রিট, লিনিয়ার কনভলিউশন ফেরত দেয়। প্রথম প্যারামিটার a (N,) হলো প্রথম একমাত্রিক ইনপুট অ্যারে। দ্বিতীয় প্যারামিটার v (M,) হলো দ্বিতীয় একমাত্রিক ইনপুট অ্যারে। তৃতীয় প্যারামিটার mode ঐচ্ছিক, মানগুলো 'full', 'valid', 'same'। মোড 'valid' আউটপুট দেয় দৈর্ঘ্য max(M, N) - min(M, N) + 1। কনভলিউশন প্রোডাক্ট শুধুমাত্র उन्हीं পয়েন্টের জন্য দেওয়া হয় যেখানে সিগন্যালগুলো সম্পূর্ণরূপে ওভারল্যাপ করে। সিগন্যাল বাউন্ডারির বাইরের মানগুলোর কোনো প্রভাব নেই।
ডিফল্ট মোড হলো 'full'। এটি ওভারল্যাপের প্রতিটি পয়েন্টে কনভলিউশন ফেরত দেয়, আউটপুট আকার (N+M-1,)। কনভলিউশনের এন্ড-পয়েন্টগুলিতে, সিগন্যালগুলো সম্পূর্ণরূপে ওভারল্যাপ করে না, এবং বাউন্ডারি ইফেক্ট দেখা যেতে পারে।
ধাপসমূহ
প্রথমে প্রয়োজনীয় লাইব্রেরি আমদানি করুন:
import numpy as np
array() মেথড ব্যবহার করে দুটি নামপাই একমাত্রিক অ্যারে তৈরি করুন:
arr1 = np.array([1, 2, 3]) arr2 = np.array([0, 1, 0.5])
অ্যারেগুলো প্রদর্শন করুন:
print("অ্যারে১...\n", arr1)
print("\nঅ্যারে২...\n", arr2)
উভয় অ্যারের মাত্রা পরীক্ষা করুন:
print("\nঅ্যারে১-এর মাত্রা...\n", arr1.ndim)
print("\nঅ্যারে২-এর মাত্রা...\n", arr2.ndim)
উভয় অ্যারের আকার পরীক্ষা করুন:
print("\nঅ্যারে১-এর আকার...\n", arr1.shape)
print("\nঅ্যারে২-এর আকার...\n", arr2.shape)
numpy.convolve() মেথড ব্যবহার করে দুটি একমাত্রিক সিকোয়েন্সের ডিসক্রিট লিনিয়ার কনভলিউশন ফেরত পান (mode='full'):
print("\nফলাফল....\n", np.convolve(arr1, arr2, mode='full'))
উদাহরণ
import numpy as np
# array() মেথড ব্যবহার করে দুটি নামপাই একমাত্রিক অ্যারে তৈরি করুন
arr1 = np.array([1, 2, 3])
arr2 = np.array([0, 1, 0.5])
# অ্যারেগুলো প্রদর্শন করুন
print("অ্যারে১...\n", arr1)
print("\nঅ্যারে২...\n", arr2)
# উভয় অ্যারের মাত্রা পরীক্ষা করুন
print("\nঅ্যারে১-এর মাত্রা...\n", arr1.ndim)
print("\nঅ্যারে২-এর মাত্রা...\n", arr2.ndim)
# উভয় অ্যারের আকার পরীক্ষা করুন
print("\nঅ্যারে১-এর আকার...\n", arr1.shape)
print("\nঅ্যারে২-এর আকার...\n", arr2.shape)
# ডিসক্রিট লিনিয়ার কনভলিউশন ফেরত পান
print("\nফলাফল....\n", np.convolve(arr1, arr2, mode='full'))
আউটপুট
অ্যারে১... [1 2 3] অ্যারে২... [0. 1. 0.5] অ্যারে১-এর মাত্রা... 1 অ্যারে২-এর মাত্রা... 1 অ্যারে১-এর আকার... (3,) অ্যারে২-এর আকার... (3,) ফলাফল.... [0. 1. 2.5 4. 1.5]