Com puc calcular la diferència de fase entre dos senyals a MATLAB?


Resposta 1:

Què és habitual dels senyals que les diferències de fase serien un paràmetre útil per examinar? Suposo que estem buscant el perfil de fase en funció de la freqüència. Un exemple que ve al cap és la comparació de fases de l’espectre de respostes d’impuls del filtre per tres criteris de disseny diferents. Dir fase mínima, fase lineal i fase màxima. Podem dissenyar un filtre FIR amb exactament la mateixa resposta de magnitud de registre, però amb tres respostes de fase diferents. Ho faig quan ensenyo disseny de filtres i per donar a l’alumnat una idea de quina fase mínima es diferencia de la fase lineal… la fase màxima és completa. Dissenyo un filtre de pas baix amb l'algoritme Parks McLellan (Remez) i després dobo els zeros fora del cercle de la unitat de nou cap a ceros inversos per formar filtres de fase mínims i, mentre que es fa al contrari, plegueu els zeros interiors cap als zeros exteriors per formar-los. filtre de fase màxima A continuació, mostro la resposta d’impuls dels tres filtres, la magnitud espectral de cadascun i la resposta de fase no embolicada (alineada a DC). mostra clarament per què tenen els seus respectius noms. Puc enviar l'exemple a qui vulgui el codi matlab.

fred harris


Resposta 2:

Utilitzeu [corr.lags] = xcorr; fer correlació; trobeu l’índex màxim màxim, [~, ix] = max (corr); retard = retards (ix); Això dóna la diferència entre el senyal s en mostres. Convertiu a radi (o qualsevol cosa) en funció del període dels vostres senyals: SI N_sig és el nombre de mostres en un període:

fase_deg = 2 * pi * retard / N_sig; o 360 * retard / N_sig si està en deg.