找回密码
 注册
关于网站域名变更的通知
查看: 433|回复: 3
打印 上一主题 下一主题

DSP的数字滤波器的实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-11-5 15:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 nuiga 于 2021-11-5 15:44 编辑
2 _6 Y, c4 u- w9 V- M0 B
3 @1 @" C; t1 ^4 b. \$ M. ]$ r  F数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。% D$ T/ [9 m$ N9 D' T7 n- g
' @9 _: z1 |  s* A$ K* V2 _
巴特沃斯滤波器是电子滤波器的一种。巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。. [" c6 n$ E+ v* p2 h
切比雪夫滤波器是在通带或阻带上频率响应幅度等波纹波动的滤波器。* b* {: N8 d( l7 D2 q4 d+ A

1 Z2 A  a  V; A! R. x0 p设计过程- H3 H5 p! w/ H& Q, B2 ?
v1. 在Matlab语言中确定滤波器的各种参数
9 L$ m' s- v; q& T5 Vv2. 将Matlab语言转换成通用语言形式
1 r/ [& p& C7 I- I% l6 _, ?v3. CCS中编写实际模拟运行的程序,采用DSP语言(C54xx和C6x)
1 Z# V+ k3 _8 L1 s( Lv4. 在硬件系统中调试程序
! H$ f1 j6 G& n
0 S9 d" h8 i! D7 y$ jMATLAB编程& b; c0 z- d" b) {' S$ x5 F' j( ^
MATLAB由于具有数值计算功能、符号计算功能、数据可视化功能、建模仿真可视化功能使得在命题构思、模型建立、仿真研究、假想验证、数据可视化各个环节有着非凡的功能。使用MATLAB中的Cheby1型函数。下面是在MATLAB中设计的低通IIR型切比雪夫滤波器程序。
/ C) N% r5 [7 I7 V, e, X3 }: m$ U
4 D8 f! ^* [1 I# gN=256; 数据点数
# x' n, _1 R  s0 w6 @v fs=600; 采样频率# m. H1 V5 d$ i: O2 s
v dt=1/fs;
, f# t! F# k5 w, E1 b$ @v for k=1:N;) s$ z1 ~5 D2 `( Z* j8 V
v f1=100; f2=250; 信号频率9 {: l! U2 \3 C# B% h* T% J
v y(k)=sin(2*pi*f1*k*dt)+sin(2*pi*f2*k*dt)+0.5*sin(2*pi*(f2# X* G) |$ s7 c) A
+20)*k*dt);1 ~0 j8 ^3 g. P  l+ J0 G7 z8 }

- T) E, J" c8 s9 x0 m* jv end
* n; G' K( M$ t2 m. |7 L2 H4 n2 e1 pv lp=200; 截止频率
9 `) ^2 ?2 C: Y, \+ A+ b. vv wn1=2*lp/fs; 函数的参数
8 r# ?1 W  J4 ]7 k: S0 c4 M, Q  |v [z1,p1,k1] = CHEBY1(2,0.5,wn1);滤波器的极零点表示
) {% E9 Y1 y  M1 {" Cv [b1,a1] = CHEBY1(2,0.5,wn1);滤波器的传递函数表示& V/ Y: ], o1 d# {; _1 k6 p
v b1=b1/(8*1.0711); 将参数按比例缩小' w/ t8 d' N& Y  ^0 X( J. Q! R5 I
v a1=a1/(8*1.0711); 为了DSP做准备,MATLAB中不需要
! m; e0 X5 E1 z& G- W. K: H* Z8 C
v yy1=filter(b1,a1,y); 滤波& D7 \& v# Q1 t
v y=fft(y,N); 将信号做FFT变换0 W. ~/ S8 |5 Y$ P6 n' J# l1 \1 B
v pyy=y.*conj(y); 做功率谱分析
% U. w& L8 x0 j$ H' jv f=(0N/2-1));- j% {/ l4 P3 @+ k% _. i% {
v figure(1);% x! b# Y1 Q+ w$ P; Z# B6 T: ^
v plot(f,pyy(1:N/2))  c$ s+ }; m. p- }
v y=fft(yy1,N); 将滤波后数据做功率谱分析
8 ^# q  F' \8 }( M+ J! Jv pyy=y.*conj(y);9 _: \( L/ L' m# L! P+ \
v f=(0N/2-1));" {+ `, ~! a1 J) R2 Q
v figure(2);& a0 D, @5 z9 [# M( e$ r, _
v plot(f,pyy(1:N/2))
0 p% j' c4 v5 k1 [4 x# B, O
& T( a6 A, C% ~将一些Matlab中的函数替换成简单的形式,将原来的filter函数去掉,自己编写一段函数,使其功能与filter函数的功能是等同的,为了方便程序从( ~. d+ D5 n0 G  |7 S# G
MATLAB的平台转换到DSP汇编的平台上。; r5 w$ ]' p1 C# v0 \7 D
) \0 f5 M' B2 L8 p0 [$ b2 y
Y=FILTER[B,A,X]是以B,A系数对X输入进行滤波,以得到输出Y,它是由如下的数学表达式执行滤波功能,表达式如下:
& R! _: I5 H0 n/ P" Hv a(1)*y(n)=b(1)*x(n)+b(2)*x(n-1)+…+b(nb+1)*x(n-nb)-a(2)*y(n-1)-…-a(na+1)*y(n-na)
; D; X; J; R3 R! k1 X4 B  K) g' O. z$ e6 ~9 S9 K( s6 T/ U9 s
可以编写一个for循环来实现上面的表达式,在上面程序中去掉yy1=filter(b1,a1,y),加入如下程序:. b! R$ p4 `6 T
v yy1(1)=0;2 P2 a4 y7 _  a/ x
v yy1(2)=0;
4 Y. ?: C5 ^* T6 x% ^v b(1)=0.0625; b(2)=0.1250; b(3)=0.0625;
3 f! e* I2 V: R7 c3 L1 f  {v a(1)=0.1167; a(2)=0.1033; a(3)=0.0448;# C/ b3 C( ?% J" u+ ?* u
v n=254;
- Q8 @* F# `  X, c1 L$ {v for i=1:n, ^1 S/ T1 E* d, _7 ^" [# L
v yy1(i+2)=0.5*y(i+2)+y(i+1)+0.5*y(i)-
+ P/ j/ ?7 V- N( ~2 j) Tv 0.83*yy1(i+1)-0.36*yy1(i);
; A" b1 k  \: N1 ^' R4 B4 _v end$ |5 P' j, p5 V6 {
) T/ J! C  Q8 q* W/ w* a

3 {5 S$ L3 ]; T0 G$ _5 F7 F3 I) H
  • TA的每日心情
    开心
    2022-12-27 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-11-5 15:43 | 只看该作者
    巴特沃斯滤波器是电子滤波器的一种

    该用户从未签到

    3#
    发表于 2021-11-5 16:08 | 只看该作者
       MATLAB由于数值计算功能、符号计算功能、数据可视化功能

    该用户从未签到

    4#
    发表于 2021-11-5 16:08 | 只看该作者
    将一些Matlab中的函数替换成简单的形式,将原来的filter函数去掉,自己编写一段函数,使其功能与filter函数的功能是等同的
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-21 17:39 , Processed in 0.093750 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表