Dalam beberapa makalah, saya membaca bahwa noise tambahan adalah pita Gaussian white.
Bagaimana saya bisa mensimulasikan jenis kebisingan ini menggunakan MATLAB?
Dalam beberapa makalah, saya membaca bahwa noise tambahan adalah pita Gaussian white.
Bagaimana saya bisa mensimulasikan jenis kebisingan ini menggunakan MATLAB?
Jawaban:
Anda akan menghasilkan noise Gaussian bandlimited dengan terlebih dahulu menghasilkan white noise, kemudian memfilternya ke bandwidth yang Anda inginkan. Sebagai contoh:
% design FIR filter to filter noise to half of Nyquist rate
b = fir1(64, 0.5);
% generate Gaussian (normally-distributed) white noise
n = randn(1e4, 1);
% apply to filter to yield bandlimited noise
nb = filter(b,1,n);
Sama seperti tambahan kecil untuk jawaban Jason: biasanya Anda perlu menghasilkan derau tanpa batas dengan varian yang diberikan . Anda dapat menambahkan kode ini ke kode yang diberikan dalam jawaban Jason:
var = 3.0; % just an example
scale = sqrt(var)/std(nb);
nb = scale*nb; % nb has variance 'var'
Perhatikan bahwa Anda harus melakukan penskalaan setelah pemfilteran, karena secara umum filter mengubah varians noise.
Setiap kali Anda menghasilkan sampel noise diskrit (Menggunakan MATLAB's randn
/ rand
misalnya) Anda benar-benar menghasilkan band noise terbatas.
Yang perlu Anda lakukan adalah menyesuaikan varians dari sampel diskrit dengan varians dari noise "Continuous" yang diduga diambil dari sampel tersebut.
Deskripsi lengkap diberikan di sini - Cara Mensimulasikan AWGN (Additive White Gaussian Noise) dalam Sistem Komunikasi untuk Bandwidth Tertentu .
Mengapa seseorang tidak dapat menggunakan pendekatan yang disebutkan dalam posting ini ?
Ini dimulai dengan frekuensi yang diinginkan dan bekerja mundur untuk membangun sinyal, bukannya menyaring. Ini menggunakan kode python, tetapi juga tautan ke kode Matlab asli.
Apakah ada kelemahan untuk melakukannya dengan cara itu?
Saya menyadari pertanyaan ini muncul dalam tampilan saat ini karena @Drazick mengubah / nya 2013 jawabannya.
rand()
frand()
"white noise" , tentu saja keliru, bahkan untuk sinyal analog. "sinyal daya" dengan spektrum datar hingga tak terhingga juga memiliki daya tak terbatas. sinyal hampir-gaus dan "putih" yang dihasilkan seperti yang dijelaskan memiliki daya terbatas (yang merupakan varian dan 1) dan bandwidth terbatas yang, dinyatakan sebagai satu sisi, adalah Nyquist. (jadi 'kerapatan spektral daya "atau daya per satuan frekuensi adalah 1 / Nyquist.) skala dan offset itu sesuka Anda.
Saya kira saya dapat mengedit ini nanti dan menambahkan beberapa kode pseudo seperti C untuk menunjukkan ini secara eksplisit.
Menghasilkan white noise spektrum penuh dan kemudian memfilternya seperti Anda ingin mengecat dinding rumah Anda putih, jadi Anda memutuskan untuk mengecat seluruh rumah putih dan mengecat kembali semua rumah kecuali dinding. Apakah idiot. (Tetapi memiliki akal dalam elektronik).
Saya membuat program C kecil yang dapat menghasilkan white noise pada frekuensi dan bandwidth apa pun (misalkan pada frekuensi pusat 16kHz dan 2 kHz "lebar"). Tidak ada penyaringan yang terlibat.
Apa yang saya lakukan adalah sederhana: di dalam loop (tak terhingga) utama saya menghasilkan sinusoid pada frekuensi tengah +/- angka acak antara -half bandwidth dan + halfbandwidth, maka saya menjaga frekuensi itu untuk jumlah sampel acak (granularity) dan ini hasilnya:
White noise lebar 2kHz pada frekuensi pusat 16kHz
Kode palsu:
while (true)
{
f = center frequency
r = random number between -half of bandwidth and + half of bandwidth
<secondary loop (for managing "granularity")>
for x = 0 to 8 (or 16 or 32....)
{
[generate sine Nth value at frequency f+r]
output = generated Nth value
}
}