Kako izračunati faznu razliku između dva signala u MATLAB-u?


Odgovor 1:

Što je zajedničko za signale da će razlike u fazama biti koristan parametar za ispitivanje? Pretpostavljam da fazni profil gledamo kao funkciju frekvencije. Jedan primjer koji pada na pamet je usporedba faza spektra reakcije impulsa filtra za tri različita dizajnerska kriterija. Recite Minimalna, linearna i maksimalna faza. Možemo dizajnirati FIR filter s točno istim odzivom Log Magnitude, ali s tri različita fazna odziva. To radim kad predajem dizajn filtra i kako bih studentima dao osjećaj što je minimalna faza, a ne linearna faza ... maksimalna faza je za cjelovitost. Dizajniram filtar niske propusnosti s algoritmom Parks McLellan (Remez), a zatim preklopim nula izvan kruga jedinice na unutarnje inverzne nulte da bi se stvorio filtar minimalne faze i dok se na njemu radi suprotno, preklopite unutrašnje nule na vanjske nule da biste formirali filtar maksimalne faze. Potom prikazujem impulsni odziv sva tri filtra, spektralnu veličinu svakog i nerazmotani fazni odgovor (poravnan na dc). to jasno pokazuje zašto imaju svoja imena. Mogu poslati primjer svima koji žele matlab kod.

fred harris


Odgovor 2:

Koristite [corr.lags] = xcorr; vršiti unakrsnu korelaciju; pronađite maksimalni indeks vrha, [~, ix] = max (corr); kašnjenje = zaostaje (ix); To daje razliku između signala s u uzorcima. Pretvori u radijane (ili bilo što drugo) na temelju razdoblja vaših signala: IF N_sig je broj uzoraka u nekom periodu:

phase_deg = 2 * pi * kašnjenje / N_sig; ili 360 * kašnjenje / N_sig ako je u deg.