资源简介
《优化阵列信号处理(上册)》小数延迟FIR滤波器设计,混合范数准则FIR滤波器设计
代码片段和文件信息
%% =======================================================
% By Ning Jiangbo
% 2018/05/01
% 小数延迟FIR滤波器
%% =======================================================
clc;
clear all;
close all;
%%
L = 16; % 滤波器长度
N_index = 0:L-1;
fs = 1e4; % 采样频率
Ts = 1./fs;
tao = 0.12345*Ts;
f_number = 100; % 频点的个数
% D_group_delay = D_group_delay_function( LtaoTs);% 群时延的点数
if mod(L2) ==1 && tao>=-0.5*Ts && tao<0.5*Ts
D_group_delay = (L-1)/2;
elseif mod(L2) ==0 && tao>=0 && tao<0.5*Ts
D_group_delay = L/2 - 1;%
elseif mod(L2) ==0 && tao>=-0.5*Ts && tao<0
D_group_delay = L/2 + 1;%
end
f_tem = linspace(00.5f_number+1);
f_digital =f_tem(1:f_number); % 数字频率
f_d_inter = (f_digital(2)-f_digital(1));
f_PB = 0:f_d_inter:0.4;
f_SB = f_PB(end)+f_d_inter:f_d_inter:f_digital(end);
Hf_pass = exp(-1i*2*pi*f_PB*(D_group_delay+tao/Ts));
% Hf_stop = exp(-1i*2*pi*f_SB*(D_group_delay+0/Ts));
Hf_desire = [Hf_passzeros(1f_number-length(Hf_pass))];
figure
subplot(211)
plot(f_PB20*log10(round(abs(Hf_pass)))‘ro-‘)
subplot(212)
plot(f_PBangle(Hf_pass)*180/pi‘ro-‘)
E_f = exp(-1i*2*pi*N_index‘*f_digital);
lamda_k = [ones(1length(Hf_pass))zeros(1f_number-length(Hf_pass))];
%% -------------- norm 1 L1范数
cvx_begin
variable h1(L)
minimize(lamda_k*(abs(E_f.‘*h1-Hf_desire.‘)))
cvx_end
Hf_passign1 = E_f.‘*h1;
subplot(211)
hold on;
plot(f_digital20*log10(abs(Hf_passign1)/max(abs(Hf_passign1)))‘g-‘)
subplot(212)
hold on;
plot(f_digitalangle(Hf_passign1)*180/pi‘g-‘)
%% --------------- norm 2 L2范数
cvx_begin
cvx_q = cvx_quiet(true)
variable h2(L)
minimize(lamda_k*((((E_f.‘*h2-Hf_desire.‘)‘).‘).*(E_f.‘*h2-Hf_desire.‘)))
cvx_end
Hf_passign2 = E_f.‘*h2;
subplot(211)
hold on;xlabel(‘fd‘);ylabel(‘幅度/dB‘);title(‘频率响应‘)
plot(f_digital20*log10(abs(Hf_passign2)/max(abs(Hf_passign2)))‘b-‘)
subplot(212)
hold on;
plot(f_digitalangle(Hf_passign2)*180/pi‘b-‘)
xlabel(‘fd‘);ylabel(‘相位/°‘);title(‘相位响应‘)
%% ------------------ norm infinite 无穷范数
cvx_begin
cvx_q = cvx_quiet(true)
variable h_inf(L)
minimize(max(lamda_k‘.*abs(E_f.‘*h_inf-Hf_desire.‘)))
cvx_end
Hf_passign_inf = E_f.‘*h_inf;
subplot(211)
hold on;
plot(f_digital20*log10(abs(Hf_passign_inf)/max(abs(Hf_passign_inf)))‘c-‘)
legend(‘期望值‘‘L1范数‘‘L2范数‘‘无穷范数‘)
subplot(212)
hold on;
plot(f_digitalangle(Hf_passign_inf)*180/pi‘c-‘)
%%
figure
plot(f_digitalabs(Hf_passign1-Hf_desire.‘)‘r--‘)
hold on;
plot(f_digitalabs(Hf_passign2-Hf_desire.‘)‘c‘)
plot(f_digitalabs(Hf_passign_inf-Hf_desire.‘)‘g.-‘)
xlabel(‘fd‘);ylabel(‘设计误差‘);
legend(‘L1范数‘‘L2范数‘‘无穷范数‘)
xlim([00.4])
%% ================LFM调频信号================
N = 512;
t = (0:N-1)/fs;
T = t(end);
fu = 2e3;fl = 1e3;
sig_LFM = sin(2*pi*(fl+(fu-fl)*t/(2*T)).*t);
figure
t_pie = t - tao;
sig_LFM_delay = sin(2*pi*(fl+(fu-fl)*t_pie/(2*T)).*t_pie);
subplot(311)
plot(tsig_LFM_delay‘b-‘);grid on;
xlim([0 inf]);
xlabel(‘time/s‘);ylabel(‘Amplitude‘);title(‘理想延迟波形‘)
y_out = conv(h1sig_LF
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17194442 2018-05-08 18:06 程序new\cvx-w32.zip
文件 21600002 2018-02-07 16:47 程序new\cvx-w64.zip
文件 3579 2018-05-10 10:13 程序new\Decimal_delay_filter1.m
文件 5120 2018-05-10 11:46 程序new\Decimal_delay_filter2.m
文件 352 2018-05-01 21:17 程序new\先读我,不让运行不了的噢.txt
目录 0 2018-05-10 12:06 程序new
----------- --------- ---------- ----- ----
38803495 6
评论
共有 条评论