Apakah ada distorsi non-linear terbatas-band?

12

Jadi jika Anda menghasilkan gelombang persegi dengan hanya mengganti sinyal di antara dua nilai, pada batas sampel, ia menghasilkan serangkaian harmonik tanpa batas, yang alias dan menghasilkan nada di bawah fundamental Anda, yang sangat terdengar. Solusinya adalah Band-Limited Synthesis , baik menggunakan sintesis aditif atau langkah-langkah band-terbatas untuk menghasilkan bentuk gelombang yang sama seperti jika Anda memiliki band-terbatas gelombang persegi matematika ideal sebelum sampel itu:

http://flic.kr/p/83JMjT

masukkan deskripsi gambar di sini

Tetapi saya baru menyadari bahwa jika Anda menerapkan amplifikasi besar ke gelombang sinus digital dan kemudian menjepitnya secara digital, itu akan menghasilkan bentuk gelombang persegi yang sama, tanpa riak fenomena Gibbs. Jadi itu juga menghasilkan produk distorsi alias, kan? Jadi setiap distorsi non-linear dalam domain digital yang menghasilkan harmonik di luar batas Nyquist akan menghasilkan produk distorsi alias? (Sunting: Saya sudah melakukan beberapa tes dan mengonfirmasi bahwa bagian ini benar.)

Adakah distorsi terbatas pada pita, untuk mensimulasikan (dalam domain digital) efek distorsi (dalam domain analog) sebelum pembatasan pita dan pengambilan sampel? Jika demikian, bagaimana Anda melakukannya? Jika saya mencari "distorsi terbatas band", saya menemukan beberapa referensi ke polinomial Chebyshev, tetapi saya tidak tahu bagaimana menggunakannya atau apakah itu hanya berfungsi untuk gelombang sinus atau apa:

Instrumen ini tidak berusaha untuk menghasilkan distorsi terbatas-band. Mereka yang tertarik dengan distorsi terbatas-band harus menyelidiki penggunaan polinomial Chebyshev untuk menghasilkan efek. Distorsi Tangen Hiperbolik

 

"Chebyshev polynomial" - membentuk fungsi-fungsi dengan properti penting yang secara intrinsik terbatas-band yaitu tidak memperkenalkan harmonik spektral palsu karena tumpang tindih dll. Wave Shaper

endolit
sumber
Saya tidak yakin apa yang Anda tanyakan. Jika Anda melakukan operasi yang menyebabkan pembuatan konten frekuensi di luar wilayah Nyquist tempat Anda beroperasi, maka Anda akan melihat alias, terlepas dari bagaimana Anda menghasilkan konten tersebut. Apa jenis distorsi analog yang Anda coba simulasikan? Salah satu pendekatan bisa dengan meng-upample sinyal ke tingkat sampel yang cukup tinggi terlebih dahulu, kemudian menggunakan wilayah Nyquist yang lebih luas untuk melakukan pemrosesan sinyal Anda. Anda kemudian dapat menurunkan sampel kembali ke kurs awal setelah selesai.
Jason R
@JasonR: Ya, untuk menghasilkan gelombang persegi, Anda dapat melakukan metode yang benar-benar terbatas-band seperti sintesis aditif, atau Anda dapat memperkirakan dengan melakukan upampling terlebih dahulu, menghasilkan gelombang persegi dengan cara naif, dan kemudian downsampling (tetapi masih akan ada beberapa aliasing, hanya di level bawah) Demikian juga, Anda dapat memperkirakan distorsi seperti yang Anda katakan dengan upampling pertama, tetapi apakah ada cara untuk menghasilkannya secara langsung, dengan nol alias, analog dengan metode sintesis aditif untuk generasi gelombang persegi?
endolith
@JasonR: Saya bertanya tentang distorsi non-linear, secara umum, tetapi sesuatu seperti meniru sirkuit distorsi ampli gitar analog akan menjadi contoh yang baik. Jika saya mengerti dengan benar, melakukannya secara naif dalam domain digital akan menghasilkan produk distorsi yang tidak ada ketika terdistorsi dalam domain analog, beberapa di antaranya mungkin jelas terdengar pada frekuensi yang lebih rendah daripada fundamental, dll.
endolith
2
@endolith Chebyshev polinomial mungkin sesuai keinginan Anda.
datageist
@datageist: Dapatkah Anda menulis jawaban tentang cara menggunakan polinomial Chebyshev? Bahkan yang pendek.
endolith

Jawaban:

5

Menerapkan fungsi non-linear akan selalu memperkenalkan harmonik, dan mencampur fungsi non-linear dengan versi sampel sinyal kontinu akan menambah kerutan yang Anda catat di atas (di mana harmonik frekuensi tinggi alias frekuensi rendah.)

Saya dapat memikirkan beberapa cara untuk melanjutkan:

  1. Anda dapat menggunakan faktor oversampling yang cukup tinggi untuk menangkap harmonik tambahan (hingga presisi sewenang-wenang, misalnya lantai kebisingan Anda),
  2. Anda dapat menggunakan fungsi kliping "lebih lembut" (lihat, misalnya, di sini ) yang memiliki harmonisa yang mati lebih cepat daripada hard clipper. Ini lebih mudah untuk dimodelkan, tetapi memperkenalkan distorsi sendiri pada frekuensi rendah.
  3. Membangun pendekatan yang Anda sarankan di atas, interpolasi sinyal sampel Anda (mis. Menggunakan interpolator Lagrange atau Chebyshev) untuk membangun model waktu kontinu. Kemudian, terapkan hard clipper dan low-pass dalam domain waktu kontinyu yang disimulasikan. Cicipi hasilnya.

Anda dapat menggabungkan (1) dan (2). Pendekatan ketiga kompleks, tetapi memberi Anda kontrol terbaik atas berapa banyak distorsi yang harus diakui, dan mungkin akan meningkatkan skala persyaratan kesetiaan yang lebih tinggi.

f(x)

f(x)=n=0[f(n)(0)n!xn]

f(x)x=g(t)g(t)xng(t)nnnnkali dari sinyal Anda. Untuk melengkapi gambar, Anda perlu mengetahui amplitudo yang terkait dengan setiap istilah dan memutuskan berapa banyak istilah dalam penjumlahan yang relevan.

(Dengan sedikit pemikiran, Anda mungkin juga dapat menggunakan formulir ini secara langsung untuk memperkirakan non-linearitas yang difilter. Itu akan membutuhkan representasi seri yang baik untuk clipper.)

Graeme
sumber
Untuk memperjelas, # 3 tidak hanya oversampling dengan interpolasi, itu menemukan parameter dari polinomial Chebyshev kontinu yang sesuai dengan titik sampel dan kemudian bekerja dengan parameter tersebut dan model polinomial?
endolith
1
Saya membayangkan urutan interpolator polinomial yang masing-masing aktif pada rentang sampel pendek. Jadi, saat kumpulan sampel baru masuk, Anda akan membuat interpolator yang hanya aktif dalam interval yang ditentukan. Perkiraan waktu kontinu Anda terhadap sinyal sampel terdiri dari polinomial ini. (Saya sedang berpikir Lagrange, tetapi Chebyshev mungkin adalah hal yang sama. Saya tidak ingat apakah interpolator Chebyshev cocok dengan titik sampel dengan tepat. Jika tidak, Anda akan mendapatkan diskontinuitas saat beralih antar interpolator.)
Graeme
4

Beberapa pendekatan untuk distorsi nonlinear alias bebas (dengan meningkatnya tingkat kesulitan):

  1. fs2NffN+1

  2. N2N

  3. f:RRf:RNRMNM>N

  4. Desain aljabar berbasis kendala : Pada item sebelumnya, Anda telah melihat bahwa distorsi nonlinier antialiasing mengarah ke filter nonlinier. Tentu saja, tidak semua filter nonlinier alias gratis, tetapi beberapa mungkin. Jadi pertanyaan yang jelas adalah agar kriteria membuat filter sedemikian ketat alias gratis dan bagaimana mendesainnya. Ternyata, pernyataan yang setara untuk bebas dari aliasing adalah, bahwa filter non-linear berubah dengan terjemahan sub-sampel. Jadi, Anda harus memastikan bahwa itu tidak membuat perbedaan jika Anda menerjemahkan terlebih dahulu lalu menyaring, atau memfilter terlebih dahulu lalu menerjemahkan. Kondisi ini menyebabkan kendala desain yang sangat ketatuntuk filter nonlinear, tetapi tergantung pada bagaimana Anda mewujudkan terjemahan sinyal. Misalnya, terjemahan yang ideal akan membutuhkan banyak koefisien untuk filter nonlinier. Jadi, Anda harus mendekati terjemahan sinyal ke urutan hingga untuk mendapatkan filter nonlinear hingga. Skala Alias-freeness dengan perkiraan yang Anda gunakan, tetapi Anda memiliki kontrol yang sangat baik untuk itu. Setelah Anda mengerjakan matematika dari pendekatan ini, Anda dapat mendesain fungsi transfer nonlinier (tidak hanya mulus) sebagai model digital yang hampir ideal dalam bentuk filter nonlinear. Saya tidak mungkin membuat sketsa detailnya di sini, tetapi mungkin Anda dapat menemukan beberapa inspirasi dari deskripsi ini.

Jazzmaniac
sumber
y[t]=x[t]k
Atau, pertanyaan lain (mungkin terkait) - jika Anda menggunakan pendekatan hingga lokal yang Anda sebutkan, Anda mendapatkan peta dari seri daya terpotong ke seri daya terpotong. Ketika Anda kemudian mencoba untuk memotong seri daya terpotong, yang biasanya akan berbelit-belit dengan fungsi sinc, apakah Anda mendapatkan ekspresi sederhana untuk hasilnya? Dapatkah hasilnya diekspresikan lagi sebagai rangkaian daya terpotong, dan jika demikian, seperti apa bentuknya?
Mike Battaglia
1
@ MikeBattaglia, mungkin Anda bisa membuat pertanyaan baru sehingga saya bisa memberikan jawaban yang menyeluruh di sana. Untuk menjawab pertanyaan kedua Anda, Anda tidak menggunakan kernel SINC tetapi dalam kasus paling sederhana, kernel boxcar. Kernel orde tinggi memang berfungsi, tetapi untuk mendapatkan hasil analitik Anda harus membatasi diri pada kernel tertentu.
Jazzmaniac
Terima kasih - membuat pertanyaan baru di sini untuk pertanyaan desain filter: dsp.stackexchange.com/q/51533/18276
Mike Battaglia
2

Tn(x)=cos(narccos(x)).

Tn(x)

(1)Tn(cos(kx))=cos(narccos(cos(kx)))=cos(nkx).

Polinomial itu sendiri dapat dengan mudah dihasilkan dengan menggunakan relasi perulangan berikut :

T0(x)=1T1(x)=xTn(x)=2xTn1(x)Tn2(x).

Inilah beberapa yang pertama:

T0(x)=1T1(x)=xT2(x)=2x(x1)=2x21T3(x)=2x(2x21)x=4x33xT4(x)=2x(4x33x)(2x21)=8x48x2+1

(1)T2cos(x)

2cos2(x)1=2(eix+eix2)21=24(ei2x+2eixeix+ei2x)1=(ei2x+ei2x2)+221=cos(2x).

Dengan menghitung Seri Chebyshev

f(x)=n=0anTn(x)

nf(x)

datageist
sumber
Terima kasih! Untuk bentuk gelombang selain sinusoid tunggal, apa yang terjadi? Intermodulasi tanpa batas atau tidak?
endolith
1
xn
1

@ robert-bristow-johnson menjelaskan ini dengan sangat jelas di comp.dsp :

Anda harus melakukan oversample hingga batas tertentu. jika Anda merepresentasikan (tanpa memori, saya berasumsi) non-linearitas sebagai polinomial urutan terbatas (yang mendekati kurva apa pun yang Anda coba implementasikan), maka apa pun urutan polinomial adalah faktor oversampling yang sama dan tidak ada alias yang akan terjadi. lalu filter low-pass (pada tingkat oversampled) untuk menyingkirkan semua komponen frekuensi yang lebih tinggi dari Nyquist asli Anda, lalu downsample dan Anda tidak akan memiliki alias.

Dengan kata lain, jika nonlinieritas Anda adalah polinomial, frekuensi tertinggi yang dapat dihasilkan oleh distorsi adalah frekuensi tertinggi dalam sinyal Anda dikalikan urutan N polinomial. (Non-linear polinomial adalah mengalikan sinyal dengan sendirinya N kali, sehingga spektrumnya akan berbelit-belit dengan dirinya sendiri dan menyebar dengan rasio yang sama.)

Jadi Anda tahu frekuensi maksimum (apakah Nyquist atau batas bawah untuk aplikasi Anda), dan Anda tahu urutan polinomialnya, sehingga Anda dapat cukup banyak untuk mencegah alias, melakukan distorsi, dan kemudian low-pass filter dan downsample.

Bahkan, Anda dapat mengurangi laju oversampling dengan membiarkan beberapa aliasing terjadi, asalkan itu terkandung dalam band yang akan dihapus sebelum downsampling:

Trik kecil lainnya adalah Anda tidak perlu peduli dengan alias yang terlipat ke area yang akan Anda LPF keluar. jadi polinomial orde 5 hanya perlu memiliki rasio oversampling dari 3. harmonik top 2 itu alias, tetapi tidak akan kembali ke baseband. Saat downsampling, Anda memfilter harmonisa tersebut. jadi saya pikir aturan yang keras dan cepat adalah

rasio oversampling = (urutan polinom + 1) / 2

endolit
sumber
2
NN+12fs
@robert saya melihat dan menambahkan bagian itu ketika Anda berkomentar. Jika Anda menulis ulang ini sebagai jawaban Anda sendiri, saya akan menghapusnya dan menerima jawaban Anda
endolith
1
Oh sayang. untuk berdandan jawaban yang bagus membutuhkan kerja keras.
robert bristow-johnson
@ robertbristow-johnson Nah, titik internet imajiner adalah milik Anda jika Anda menginginkannya
endolith