Cum de a determina frecvența exactă a semnalului audio

Am văzut tuneri sunt stabilite într-o fracțiune de secundă, cu o precizie de 0,1 Hz.

Am descarcat un cuplu de Oupen sours. pokapalsya. Am înțeles nimic în afară. ei încă mai folosesc FFT.







La o carte la radio staisticheskoy derivarea văzut de estimare probabilității maxime a parametrilor o undă sinusoidală la zgomot de fond gausovogo. Aceste formule sunt în cele din urmă a inclus o transformare Fourier pe semnalul de intrare de citire. Poate că acesta este motivul pentru care vezede Fourier și se aplică.

Cred că FFT este posibil pentru sinus și cosinus poate fi o formulă simplă pentru a calcula.


Nu cred. Aici corelația pentru cazul dumneavoastră poate fi considerată complexitatea N * Ng.
Dar nu dă avantaje. Este necesar de a face FFT a buclei pe k.


Santik.
Nu am considerat iterativ, deoarece trupa nu era sigur. Acum sigur, dar poate iterativ. Doar aici lățime de bandă de 1 Hz, astfel încât intonația este posibilă doar atunci când avem o astfel de precizie de 1 Hz. Din moment ce avem o serie de sub-a doua precizie nu este live destul de până la 1 Hz.
Deci, aici va crește de 2 ori.

Dar convoluției poate fi accelerat, deoarece am folosit FT în cazul în care păcatul și cos este calculat la fiecare pas.
Acolo Goertzel algoritm. Deoarece este prost descrisă în literatură, în continuare voi descrie pot fi diferite sau să nu se potrivească.
Deci, pentru un calcul rapid, puteți utiliza proprietatea cosinusul și sinusul suma sumei.

Acolo Cos (-2 * Pi * i * w * N1); poate fi reprezentat ca cos (-2 * Pi * (i-1) * N1 + -2 * Pi * 1 * N1) = relabel = cos (a_I_1 + b) = cos (a_I_1) * cos (b) -sin (a_I_1 ) * sin (b)
sin (a_I_1 + b) = sin (a_I_1) * cos (b) + cos (a_I_1) * sin (b)

1) sin (b)
cos (b)
Computerizată în afara buclei.
2)
sin (a_I_1)
cos (a_I_1)
Este cunoscut din iterația anterioară. La fiecare 10 trebuie să fie accelerată.

Adăugat mai târziu:
In general, toate acestea este un nonsens, luați FFT și un pic remake împărțind frecvența inițială de N ori.
Astfel, vom crește acuratețea și viteza.

Buna ziua!

Este angajat în procesarea unui discurs recent, a fost, de asemenea, problema determinării frecvenței fundamentale. În cursul cules de pe acest subiect am constatat că principiile de voce și sunete muzicale monofonice (sunetul unui singur șir, în cazul unei chitare) este în esență același.

În MNU am transformat acest cod pentru Matlab:


Funcția ia ca parametri de frame - fragment scurt semnal (30 până la 80 ms), frecvența de eșantionare Fs și banda superioară, care caută frecvența pas (chitară șir deschis se va potrivi cu debit de rezervă = 60, fhigh = 400).

Chiar și cu frecvența de eșantionare de 48 kHz de eroare de eșantionare pentru primul șir poate fi despre

Prin urmare, pentru a crește precizia funcției de căutare minimă D2 înșurubate de interpolare parabolică:

Cum de a determina frecvența exactă a semnalului audio






ramateur. Da. pentru unul din șirul acestei metode o plimbare. Cred că toate tunere acea fracțiune de secundă determină frecvența de lucru cu avtokorellyatsiey. Dar nu este potrivit pentru o varietate de șir de caractere.

Cum de a determina frecvența exactă a semnalului audio

67: Da, este o multiplicare a doi vectori, dintre care unul komplekno conjugat. Dacă faci atunci Fourier inversă - obține corelarea încrucișată.
72: Da, vom face direct si transformata inversă pentru a recupera după 2 matrice. Dar atunci formula este simpla. Aceasta este o condiție sine cardinal nu este ocupat.

Și ultima întrebare, am cumva nu înțeleg.

Cum de a determina frecvența exactă a semnalului audio

Santik. t.est în formula 67 va fi astfel. (A + bi) · (a '+ b'i) = (a · a'-b · b') + (a · b '+ b · a') i. Corect?

Hmm. mijloace normale. normale. poyantnym pentru compilator, și pentru un om). Ei bine, și anume -0.69019186E + 01 - acest număr este înmulțită cu E + 01 sau + 0,1. sau E este 01. In gradul general. cum să înregistreze acest număr. fără a utiliza litera E.

Cum de a determina frecvența exactă a semnalului audio

Santik. t.est în formula 67 va fi astfel. (A + bi) · (a '+ b'i) = (a · a'-b · b') + (a · b '+ b · a') i. Corect?

Hmm. mijloace normale. normale. poyantnym pentru compilator, și pentru un om). Ei bine, și anume -0.69019186E + 01 - acest număr este înmulțită cu E + 01 sau + 0,1. sau E este 01. In gradul general. cum să înregistreze acest număr. fără a utiliza litera E.

Da, corect. În toate cele 67 de complex. Numai noi trebuie să facem în continuare pentru kompleknoe pereche doilea operand - adică schimba semnul părții imaginare.

E - este 10. E + 01 - un 10 grad 1.
-0.69019186E + 01 = -6.9019186

Cum de a determina frecvența exactă a semnalului audio

În cele din urmă am verificat. Unitate despartitor N / 2 Numărul de final unitatea de matrice pe 1 vom obține întotdeauna Er = 1. Deoarece valorile lor sunt aceleași. Prin urmare, rezultate incorecte. Cu excepția cazului. interpretare eronată a elementelor din matrice. În Fortran vă e-matrice începe cu primul sau element de 0go.

Cum de a determina frecvența exactă a semnalului audio

În Fortran vă e-matrice începe cu primul sau element de 0go.


În primul Fortran.

Cum de a determina frecvența exactă a semnalului audio

Toate. M-am decis. Problema a fost ca întotdeauna o reducere a tipurilor C. Testate pe generator de semnal de 300 Hz - sări peste valorile 302-288 Hz. succesiv umenshaetsya. aceasta crește. În general,

Cum de a determina frecvența exactă a semnalului audio

O frecvență în semnalul ciripit este schimbat în ce măsură? Când fd = 44100 și N = 44100 este 0.5Hz necesară
Când fd = 8000 și N = 1024 ar trebui să fie de 0,5 * 8000/1024
Signal 300 cps out, a se vedea