⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compute_equalizer.m

📁 program in matlab code to do a equalization of a signal DSP Applications
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Lab Assignment #1: frequency equalizer for a broadcast relay station  %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%function [equ_taps_MAG,equ_taps_PHASE]=compute_equalizer(mag, phase);
%
%   funci髇 que devuelve los coeficientes de dos filtros FIR utilizados, en cascada, 
%   para implementar un equalizador que responda a los valores de magnitud y fase 
%   presentados en los
%   dos vectores de entrada de la funci髇:
%       "mag" (respuesta en magnitud deseada)
%       "phase" (respuesta de fase esperada)
%
%   equ_taps_MAG: coeficientes del filtro corrector de magnitud
%   equ_taps_PHASE: coeficientes del filtro corrector de fase

function [equ_taps_MAG,equ_taps_PHASE]=compute_equalizer(mag, phase);

%%%% DEFINICI覰 DE PAR罬ETROS %%%%

%magnitud equalizador fase
mag_allpass=ones(size(mag));

%fase equalizador magnitud
phase_cero=zeros(size(phase));

%conversi髇 magnitud: de dB a unidades naturales
mag_un=10.^(mag./20);

%conversi髇 fase: de radianes a grados
fase_gr = rad2deg(phase);

%eje de frecuencias (normalizado)
w=linspace(0,8e6,25);
w_n=pi*w/8e6;
W=w_n/pi;

%%%% FILTRO COMPONENTE MAGNITUD %%%%
Hmag=mag_un.*exp(j*phase_cero);
Ncoef=350;
B=FIR2(Ncoef,W,abs(Hmag));
equ_taps_MAG=B;


%%%% FILTRO COMPONENTE FASE %%%%

Hphase=mag_allpass.*exp(j*phase);
%obtenci髇 de los coeficientes del filtro y asignaci髇 a la variable de
%salida
hphase=ifft(Hphase,50);
equ_taps_FASE=hphase;
%obtenci髇 filtro
[Hphase f]=freqz(hphase);


%%%% REPRESENTACI覰 %%%%

%%%% CORRECTOR DE MAGNITUD %%%%

%comparativa magnitud
s.xunits='rad/sample';
s.plot='mag';
subplot(211);
hold on;
plot(W,mag,'go');
freqz(B);
title('Magnitude');
hold off;
subplot(212);
hold on;
title('Phase');
hold off;

figure;


%%%% CORRECTOR DE FASE %%%%

%definici髇 eje f_n
f_n=linspace(0,1,length(f));
%magnitud
s.xunits='rad/sample';
s.plot='mag';
subplot(211);
hold on;
freqzplot(Hphase,f,s);
title('Magnitude');
hold off;

%comparativa fase
subplot(212);
hold on;
plot(f_n,rad2deg(angle(Hphase))); % fase 揹ise馻da

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -