MATLAB'de iki sinyal arasındaki faz farkını nasıl hesaplayabilirim?


cevap 1:

Faz farklılıklarının incelemek için yararlı bir parametre olacağına dair sinyaller arasında yaygın olan nedir? Faz profiline frekansın bir fonksiyonu olarak baktığımızı varsayıyorum. Akla gelen bir örnek, üç farklı tasarım kriteri için filtre impuls cevapları spektrumunun faz karşılaştırmasıdır. Minimum faz, doğrusal faz ve maksimum faz deyin. Tam olarak aynı Günlük Büyüklüğü yanıtı ancak üç farklı faz yanıtı ile bir FIR filtresi tasarlayabiliriz. Bunu filtre tasarımını öğrettiğimde ve öğrencilere doğrusal fazın aksine hangi minimum fazın olduğu hakkında bir fikir vermek için yapıyorum… maksimum faz bütünlük içindir. Parks McLellan (Remez) algoritması ile düşük geçişli bir filtre tasarlıyorum ve daha sonra minimum faz filtresi oluşturmak için birim dış sıfır dairelerini ters iç sıfırlar içine geri katlarım ve tersini yaparken iç sıfırları oluşturmak için dış sıfırlara geri katlayın maksimum faz filtresi. Daha sonra her üç filtrenin dürtü tepkisini, her birinin spektral büyüklüğünü ve sarılmamış faz tepkisini (dc ile hizalanmış) gösteririm. neden ilgili isimlerine sahip olduklarını açıkça göstermektedir. Matlab kodunu isteyen herkese örnek gönderebilirim.

fred harris


cevap 2:

[Corr.lags] = xcorr; çapraz korelasyon yapmak; maksimum tepe indeksini bulun, [~, ix] = maks (düzeltme); gecikme = gecikmeler (ix); Bu, örneklerde sinyal s ile arasındaki farkı verir. Sinyallerinizin süresine göre radyanlara (veya herhangi bir şeye) dönüştürün: EĞER N_sig, bir dönemdeki örnek sayısıdır:

phase_deg = 2 * pi * gecikme / N_sig; veya derece cinsinden 360 * gecikme / N_sig.