求用MATLAB,频率采样法设计的高通FIR滤波器(最好有解释),谢谢啦!

实在不行给个思路也好

如果你只是要理论仿真的话,切比雪夫逼近法最好,FDATOOL就行了,如果只想满足自己想法用频率抽样法在Matlab里溜一遍,我做过用频率采样发设计的FIR低通滤波器,高通自己改下参数和符号数,程序说明很清楚了,参考胡广书的《数字信号处理-理论、算法与实现》改程序里的符号变量和数据。
代码:
%-----------------------------------------------------------------
%作者:樊彦(10信处)
%名称:数字信号处理---胡广书
%功能:习题7.3——FIR设计数字低通滤波器(DLP)→EvenOdd
%理想低通频率响应:Hd=1:|w|<=pi/4;Hd=0:pi/4<|w|<pi;
%版本:3.0
%-----------------------------------------------------------------
clear all;
clc;

N=51; %滤波器系数的长度(时域点数)
M=N-1; %辅助参数
Wc=pi/4; %理想截止频率
%-----------------------------------------------------------------
%符号运算,求hn→FIR-DLP的时域序列
%--------------------------------
syms k n real %指定符号变量→w:频率,n:离散时间
%N为偶数时
Hd_Even_Front=exp(-j*k*pi*(N-1)/N); %0,1,...,N/2-1
Hd_Even_Half=0; %N/2
Hd_Even_Back=-exp(-j*k*pi*(N-1)/N); %N/2+1,N/2+2,...,N-1
%N为奇数时
Hd_Odd=exp(-j*k*pi*(N-1)/N); %0,1,...,N-1
%-----------------------------------------------------------------
%先计算Hd,再计算hn→IDFT(Hd)
nc=floor(N*Wc/(2*pi)); %计算通带Hd截止(Matlab)坐标
Hd_value=0.3830; %改进滤波器性能参数(0.3~0.5)
if 0~=rem(N,2) %N为奇数
for i=0:N-1
if i<=nc
Hd(i+1)=double(limit(Hd_Odd,k,i)); %计算Hd_奇数
elseif i>=N-nc
Hd(i+1)=double(limit(Hd_Odd,k,i)); %计算Hd_奇数
else
Hd(i+1)=0;
end
end
Hd(1,nc+2)=Hd_value*double(limit(Hd_Odd,k,nc+1)); %改善Hd—1
Hd(1,N-nc)=Hd_value*double(limit(Hd_Odd,k,N-nc-1));
% Hd(1,nc+3)=0.01*double(limit(Hd_Odd,k,nc+2)); %改善Hd—2
% Hd(1,N-nc-1)=0.01*double(limit(Hd_Odd,k,N-nc-2));
else %N为偶数
for i=0:N-1
if i<=(N/2-1)
if i<=nc
Hd(i+1)=double(limit(Hd_Even_Front,k,i)); %计算Hd_偶数
else
Hd(i+1)=0;
end
elseif i==N/2
Hd(i+1)=0; %计算Hd_偶数
else
if i>=N-nc
Hd(i+1)=double(limit(Hd_Even_Back,k,i)); %计算Hd_偶数
else
Hd(i+1)=0;
end
end
end
Hd(1,nc+2)=Hd_value*double(limit(Hd_Even_Front,k,nc+1)); %改善Hd—1
Hd(1,N-nc)=Hd_value*double(limit(Hd_Even_Back,k,N-nc-1));
% Hd(1,nc+3)=0.01*double(limit(Hd_Even_Front,k,nc+2)); %改善Hd—2
% Hd(1,N-nc-1)=0.01*double(limit(Hd_Even_Back,k,N-nc-2));
end
hn=ifft(Hd,N); %计算hn
%-----------------------------------------------------------------
%求频率响应
%-------------------
%b=hn; %FIR滤波器的系数
Hw_0=sum(hn); %w=0处的IDTFT(hn)
b=hn/Hw_0; %FIR滤波器的归一化系数
a=1;
[H,w]=freqz(b,a); %返回w为数字频率值
%-----------------------------------------------------------------
%幅频响应&&相频响应
Hr=abs(H); %幅频响应
dBHr=20*log10(Hr); %幅频响应(dB)
%dBHr=Hr;
Hphase=angle(H); %相频响应
Hphase=unwrap(Hphase); % 解卷绕
%-----------------------------------------------------------------
%图形-数据可视化
set(figure(1),'Name','时域实数序列图')
stem(0:M,hn,'.');grid on;
axis([-0.1 M+0.1 -1.1*max(abs(hn)) 1.1*max(abs(hn))]); %限定横坐标和纵坐标的显示范围
title('FIR-频率抽样法-DLPF-时域实数序列');
%semilogy(w,Hr);grid on; %x轴线性,y轴对数
ylabel(' Amplitude value ');
xlabel(' Discrete Time (s)');
%-----------------------------------------------------------------
set(figure(2),'Name','频域序列序列图')
subplot(311)
stem(0:M,real(Hd),'.');grid on; %画频率响应的实部序列--关于中点偶对称
axis([-0.1 M+0.1 -1.1*max(abs(real(Hd))) 1.1*max(abs(real(Hd)))]); %限定横坐标和纵坐标的显示范围
title('FIR-频率抽样法-DLPF-频域值的实部序列(关于中点偶对称)');
%semilogy(w,Hr);grid on; %x轴线性,y轴对数
ylabel(' Amplitude value ');
xlabel(' Discrete Time (s)');
subplot(312)
stem(0:M,imag(Hd),'.');grid on; %画频率响应的虚部序列--关于中点奇对称
axis([-0.1 M+0.1 -1.1*max(abs(imag(Hd))) 1.1*max(abs(imag(Hd)))]); %限定横坐标和纵坐标的显示范围
title('FIR-频率抽样法-DLPF-频域值的虚部序列(关于中点奇对称)');
%semilogy(w,Hr);grid on; %x轴线性,y轴对数
ylabel(' Amplitude value ');
xlabel(' Discrete Time (s)');
subplot(313)
stem(0:M,abs(Hd),'.');grid on; %画频率响应的幅值序列--关于中点偶对称
axis([-0.1 M+0.1 -1.1*max(abs(Hd)) 1.1*max(abs(Hd))]); %限定横坐标和纵坐标的显示范围
title('FIR-频率抽样法-DLPF-频域摸值序列');
%semilogy(w,Hr);grid on; %x轴线性,y轴对数
ylabel(' Amplitude value ');
xlabel(' Discrete Time (s)');
%-----------------------------------------------------------------
set(figure(3),'Name','相频响应图')
plot(w,Hphase,'');grid on; %画相频响应虚线
title('FIR-频率抽样法-DLPF-相频响应');
ylabel(' Phase Freq. Res.');
xlabel(' Digital Freq (rad)');
%-----------------------------------------------------------------
set(figure(4),'Name','幅频响应(dB)图')
%subplot(211)
plot(w,dBHr,'');grid on; %画归一化的幅频率响应曲线
axis([0 pi 1.1*min(dBHr) 1.01*max(dBHr)]); %限定横坐标和纵坐标的显示范围
%axis([0 pi/4 -5 1.01*max(dBHr)]);
title('FIR-频率抽样法-DLPF-幅频响应(dB)');
%semilogy(w,Hr);grid on; %x轴线性,y轴对数
ylabel(' Amplitude Freq. Res.(dB)');
xlabel(' Digital Freq (rad)');

参考资料:数字信号处理-理论、算法与实现

温馨提示:内容为网友见解,仅供参考
无其他回答

基于matlab 的fir滤波器程序
那就假设几个吧:采样频率:fs=80khz 经计算得相应数字滤波器的指标:通带截止频率:fp=0.6*fs\/2 通带波纹:rp=0.01(假设的,单位db,下同);阻带截止频率:fs=0.7*fs\/2 阻带衰减:rs=0.1(假设的,同上)程序如下,给出了幅频特性曲线。clear;fs=80;fp=0.6*fs\/2;rp=0.01;fs=0....

基于MATLAB的工具箱fdatool的FIR滤波器系数的设计
1. 启动MATLAB,通过命令行输入“fdatool”打开滤波器设计工具箱。2. 以设计等波纹法低通FIR滤波器为例,设置滤波器阶数为15,采样频率50MHz,通带频率2MHz,截止频率3MHz。点击“Design Filter”。3. 展示设计的滤波器后,导出文件。选择定点数(FPGA处理浮点数复杂,宜用定点数),设置位数为16,综合...

Matlab生成fir滤波器抽头系数
首先,打开Matlab,启动滤波器设计工具fdatool。在工具界面,选择所需的滤波类型(如低通或高通),并在fir设计方法中选择窗函数作为设计手段。在窗函数部分,选择一个适合的窗口类型,例如汉明窗。接下来,决定滤波器的阶数,尽管默认最小,但可能需要根据需求调整以优化滤波效果,但注意阶数越高,计算量和...

matlab fir滤波器
所希望的频率响应在0~0.25*pi之间为1,在0.25*pi~pi之间为0,对h(n)加窗截断,选择矩形窗和任意一种其他窗口,每种窗口长度分别为M=10、20、40三种情况,对每种情况要进行性能好坏的分析。首先需要理解实际的滤波器是没有办法做到理想状态的。如果你要理想状态的话,就直接就是矩形窗序列乘序列...

用MATLAB设计低通,带通,高通和带阻FIR数字滤波器 急!!!
本实验箱采样频率fs固定为10KHz,低通滤波器的截止频率约为4.5KHz。1、用低频信号源产生正弦信号,正弦信号源频率f自定,并将其接至2TP2(模拟输入)端,将示波器通道一探头接至2TP6(采样时钟)端观察采样时钟波形,示波器通道二探头接至2TP2观察并记录输入信号波形。2、将示波器通道二探头接至2TP3观察并记录样点输出...

给定系统函数怎么在MATLAB中在fitter design中设计滤波器
IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。FIR数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等...

如何用matlab画滤波器?
低通滤波器的设计要求是:采样频率为100Hz,通带截至频率为3 Hz,阻带截止频率为5 Hz,通带内最大衰减不高于0.5 dB,阻带最小衰减不小于50 dB。使用海明窗函数。确定N的步骤有:1,从上表可查得海明窗的精确过渡带宽为6.6pi\/N;(在有些书中用近似过渡带来计算,这当然没有错,但阶数增大了,...

简述 频率采样法设计FIR数字滤波器的步骤.
第一步:确定希望逼近的理想滤波器的频率响应 第二步:在频域内对进行N点等间隔采样,利用频率采样设计公式求频率采样值Hd(k),采样间隔△ω=2π/N=O.1 π,这样在通带内共有3个采样点,分别是k=0,1,2。利用频率采样设计式(10)和式(11),可以得到:第三步:用离散傅里叶逆变换求得要...

基于matlab数字滤波器的设计
本次数字滤波器设计方法是基于MATLAB的数字滤波器的设计。此次设计的主要内容为:IIR数字滤波器和FIR数字滤波器的设计关键词:IIR、FIR、低通、高通、带阻、带通Abstract"Digital Signal Processing" is a theoretical and practical nature are strong, and it has advanced algebra and numerical analysis, probability ...

FIR滤波器的设计方法有哪些?
进入FIR滤波器前,首先要将信号通过A\/D器件进行模数转换,把模拟信号转化为数字信号。为了使信号处理能够不发生失真,信号的采样速度必须满足香农采样定理,一般取信号频率上限的4-5倍做为采样频率。一般可用速度较高的逐次逼进式A\/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器。FPGA有着规整的...

相似回答