যারা এসএনআর এবং একটি সাধারণ এলোমেলো ভেরিয়েবলের মধ্যে সংযোগ তৈরি করার চেষ্টা করছেন তাদের জন্য :
[1]
, যেখানে পি গড় শক্তি বলে মনে রাখা গুরুত্বপূর্ণ ।
বা ডিবিতে:
[২]
এই ক্ষেত্রে, আমাদের ইতিমধ্যে একটি সংকেত রয়েছে এবং আমরা আমাদের একটি পছন্দসই এসএনআর দিতে শব্দ উত্পন্ন করতে চাই।
আপনি কী মডেলিং করছেন তার উপর নির্ভর করে শব্দের বিভিন্ন স্বাদ আসতে পারে , তবে একটি ভাল শুরু (বিশেষত এই রেডিও টেলিস্কোপের উদাহরণের জন্য) হলেন অ্যাডেটিভ হোয়াইট গাউসিয়ান নয়েস (এডাব্লুজিএন) । পূর্ববর্তী উত্তরে বর্ণিত হিসাবে, AWGN মডেল করতে আপনাকে আপনার মূল সিগন্যালে শূন্য-গড় গাউসিয়ান র্যান্ডম ভেরিয়েবল যুক্ত করতে হবে। এই র্যান্ডম ভেরিয়েবলের বৈকল্পিক গড় শব্দ শক্তিকে প্রভাবিত করবে ।
গাউসিয়ান এলোমেলো পরিবর্তনশীল এক্স এর জন্য, গড় শক্তি
, যা দ্বিতীয় মুহূর্ত হিসাবেও পরিচিত ,
[3] 
তাই সাদা শব্দের জন্য,
এবং গড় শক্তি তখন বৈকল্পের সমান
।
অজগরটিকে এটি মডেল করার সময় আপনি হয়
১ টি করতে পারেন একটি পছন্দসই এসএনআর এবং বিদ্যমান পরিমাপের একটি সেটের উপর ভিত্তি করে বৈকল্পিক গণনা করুন, যদি আপনি আপনার পরিমাপগুলি মোটামুটি ধারাবাহিক প্রশস্ততা মান রাখার প্রত্যাশা করেন তবে এটি কাজ করবে।
২. বিকল্প হিসাবে, আপনি রিসিভার শব্দের মতো কোনও কিছুর সাথে মিলের জন্য একটি পরিচিত স্তরে শব্দ শক্তি সেট করতে পারেন। দূরবীনকে ফাঁকা জায়গায় চিহ্নিত করে এবং গড় পাওয়ার গণনা করে রিসিভারের শব্দটি মাপা যায়।
যে কোনও উপায়ে, আপনার সিগন্যালে আপনি শব্দটি যুক্ত করেছেন এবং ডিবি ইউনিট নয়, লিনিয়ার স্পেসে গড় নেন তা নিশ্চিত করা গুরুত্বপূর্ণ।
একটি সিগন্যাল এবং প্লটের ভোল্টেজ, ওয়াটসে শক্তি এবং ডিবিতে শক্তি উত্পন্ন করার জন্য এখানে কিছু কোড রয়েছে:
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(1, 100, 1000)
x_volts = 10*np.sin(t/(2*np.pi))
plt.subplot(3,1,1)
plt.plot(t, x_volts)
plt.title('Signal')
plt.ylabel('Voltage (V)')
plt.xlabel('Time (s)')
plt.show()
x_watts = x_volts ** 2
plt.subplot(3,1,2)
plt.plot(t, x_watts)
plt.title('Signal Power')
plt.ylabel('Power (W)')
plt.xlabel('Time (s)')
plt.show()
x_db = 10 * np.log10(x_watts)
plt.subplot(3,1,3)
plt.plot(t, x_db)
plt.title('Signal Power in dB')
plt.ylabel('Power (dB)')
plt.xlabel('Time (s)')
plt.show()

কাঙ্ক্ষিত এসএনআরের ভিত্তিতে এডাব্লুজিএন যুক্ত করার জন্য এখানে একটি উদাহরণ রয়েছে:
target_snr_db = 20
sig_avg_watts = np.mean(x_watts)
sig_avg_db = 10 * np.log10(sig_avg_watts)
noise_avg_db = sig_avg_db - target_snr_db
noise_avg_watts = 10 ** (noise_avg_db / 10)
mean_noise = 0
noise_volts = np.random.normal(mean_noise, np.sqrt(noise_avg_watts), len(x_watts))
y_volts = x_volts + noise_volts
plt.subplot(2,1,1)
plt.plot(t, y_volts)
plt.title('Signal with noise')
plt.ylabel('Voltage (V)')
plt.xlabel('Time (s)')
plt.show()
y_watts = y_volts ** 2
y_db = 10 * np.log10(y_watts)
plt.subplot(2,1,2)
plt.plot(t, 10* np.log10(y_volts**2))
plt.title('Signal with noise (dB)')
plt.ylabel('Power (dB)')
plt.xlabel('Time (s)')
plt.show()

এবং একটি পরিচিত শব্দ শক্তি ভিত্তিতে AWGN যুক্ত করার জন্য এখানে একটি উদাহরণ রয়েছে:
target_noise_db = 10
target_noise_watts = 10 ** (target_noise_db / 10)
mean_noise = 0
noise_volts = np.random.normal(mean_noise, np.sqrt(target_noise_watts), len(x_watts))
y_volts = x_volts + noise_volts
plt.subplot(2,1,1)
plt.plot(t, y_volts)
plt.title('Signal with noise')
plt.ylabel('Voltage (V)')
plt.xlabel('Time (s)')
plt.show()
y_watts = y_volts ** 2
y_db = 10 * np.log10(y_watts)
plt.subplot(2,1,2)
plt.plot(t, 10* np.log10(y_volts**2))
plt.title('Signal with noise')
plt.ylabel('Power (dB)')
plt.xlabel('Time (s)')
plt.show()
