有没有关于gfskgmsk的调制解调matlab仿真或vc的相关程序

有没有关于gfskgmsk的调制解调matlab仿真或vc的相关程序,第1张

用matlab程序实现.

2.系统经过的信道都假设为高斯白噪声信道.

3.模拟调制要求用程序画出调制信号,载波,已调信号、解调信号的波形,数字调制要求画出误码率随信噪比的变化曲线。

4.以上步骤要求在不同的信噪比(0:2:20db)下完成.

会的帮我做下,是课程设计来的,我怕自己完成不了,给个参考也好.

希望对你有所帮助!

基于MATLAB信号处理工具箱的数字滤波器设计与仿真

摘要:传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。本文介绍了一种利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的FDATool工具进行界面设计的详细步骤。利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。本文还介绍了如何利用MATLAB环境下的仿真软件Simulink对所设计的滤波器进行模拟仿真。

关键词:数字滤波器 MATLAB FIR IIR

引言:

在电力系统微机保护和二次控制中,很多信号的处理与分析都是基于对正弦基波和某些整次谐波的分析,而系统电压电流信号(尤其是故障瞬变过程)中混有各种复杂成分,所以滤波器一直是电力系统二次装置的关键部件【1】。目前微机保护和二次信号处理软件主要采用数字滤波器。传统的数字滤波器设计使用繁琐的公式计算,改变参数后需要重新计算,在设计滤波器尤其是高阶滤波器时工作量很大。利用MATLAB信号处理工具箱(Signal Processing Toolbox)可以快速有效的实现数字滤波器的设计与仿真。

1 数字滤波器及传统设计方法

数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。

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

在对滤波器实际设计时,整个过程的运算量是很大的。例如利用窗函数法【2】设计M阶FIR低通滤波器时,首先要根据(1)式计算出理想低通滤波器的单位冲激响应序列,然后根据(2)式计算出M个滤波器系数。当滤波器阶数比较高时,计算量比较大,设计过程中改变参数或滤波器类型时都要重新计算。

(1)

(2)

设计完成后对已设计的滤波器的频率响应要进行校核,要得到幅频相频响应特性,运算量也是很大的。我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。

2数字滤波器的MATLAB设计

2.1 FDATool界面设计

2.1.1 FDATool的介绍

FDATool(Filter Design &Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。它 *** 作简单,方便灵活。

FDATool界面总共分两大部分,一部分是Design Filter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:

Filter Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。

Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type I(切比雪夫I型)法、 Chebyshev Type II(切比雪夫II型) 法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。

Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify Order(指定阶数)和Minimum Order(最小阶数)。在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1),如果选择Minimum Order则MATLAB根据所选择的滤波器类型自动使用最小阶数。

Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。

Magnitude Specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。

Window Specifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。

2.1.2 带通滤波器设计实例

本文将以一个FIR 滤波器的设计为例来说明如何使用MATLAB设计数字滤波器:在小电流接地系统中注入83.3Hz的正弦信号,对其进行跟踪分析,要求设计一带通数字滤波器,滤除工频及整次谐波,以便在非常复杂的信号中分离出该注入信号。参数要求:96阶FIR数字滤波器,采样频率1000Hz,采用Hamming窗函数设计。

本例中,首先在Filter Type中选择Bandpass(带通滤波器);在Design Method选项中选择FIR Window(FIR滤波器窗函数法),接着在Window Specifications选项中选取Hamming;指定Filter Order项中的Specify Order=95;由于采用窗函数法设计,只要给出通带下限截止频率Fc1和通带上限截止频率Fc2,选取Fc1=70Hz,Fc2=84Hz。设置完以后点击Design Filter即可得到所设计的FIR滤波器。通过菜单选项Analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。设计完成后将结果保存为1.fda文件。

在设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,

以便得到最佳效果。其它类型的FIR滤波器和IIR滤波器也都可以使用FDATool来设计。

图1 滤波器幅频和相频响应(特性区)

Fig.1 Magnitude Response and Phase Response of the filter

2.2 程序设计法

在MATLAB中,对各种滤波器的设计都有相应的计算振幅响应的函数【3】,可以用来做滤波器的程序设计。

上例的带通滤波器可以用程序设计:

c=95 %定义滤波器阶数96阶

w1=2*pi*fc1/fs

w2=2*pi*fc2/fs %参数转换,将模拟滤波器的技术指标转换为数字滤波器的技术指标

window=hamming(c+1) %使用hamming窗函数

h=fir1(c,[w1/pi w2/pi],window) %使用标准响应的加窗设计函数fir1

freqz(h,1,512) %数字滤波器频率响应

在MATLAB环境下运行该程序即可得到滤波器幅频相频响应曲线和滤波器系数h。篇幅所限,这里不再将源程序详细列出。

3 Simulink仿真

本文通过调用Simulink中的功能模块构成数字滤波器的仿真框图,在仿真过程中,可以双击各功能模块,随时改变参数,获得不同状态下的仿真结果。例如构造以基波为主的原始信号,,通过Simulink环境下的Digital Filter Design(数字滤波器设计)模块导入2.1.2中FDATool所设计的滤波器文件1.fda。仿真图和滤波效果图如图2所示。

图2 Simulink仿真图及滤波效果图

Fig.2 Simulated connections and waveform

可以看到经过离散采样、数字滤波后分离出了83.3Hz的频率分量(scope1)。之所以选取上面的叠加信号作为原始信号,是由于在实际工作中是要对已经经过差分滤波的信号进一步做带通滤波,信号的各分量基本同一致,可以反映实际的情况。本例设计的滤波器已在实际工作中应用,取得了不错的效果。

4 结论

利用MATLAB的强大运算功能,基于MATLAB信号处理工具箱(Signal Processing Toolbox)的数字滤波器设计法可以快速有效的设计由软件组成的常规数字滤波器,设计方便、快捷,极大的减轻了工作量。在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化。利用MATLAB设计数字滤波器在电力系统二次信号处理软件和微机保护中,有着广泛的应用前景。

参考文献

1. 陈德树. 计算机继电保护原理与技术【M】北京:水利电力出版社,1992.

2. 蒋志凯. 数字滤波与卡尔曼滤波【M】北京:中国科学技术出版社,1993

3. 楼顺天、李博菡. 基于MATLAB的系统分析与设计-信号处理【M】西安:西安电子科技大学出版社,1998.

4. 胡广书. 数字信号处理:理论、算法与实现【M】.北京:清华大学出版社,1997.

5. 蒙以正. MATLAB5.X应用与技巧【M】北京:科学出版社,1999.

仅供参考,请自借鉴

由于篇幅限制,这是原文地址:

http://blog.sina.com.cn/s/blog_4c0f36cb01009i2n.html

希望对您有帮助

library ieee

use ieee.std_logic_1164.all

use ieee.std_logic_unsigned.all--库和程序包调用

entity GMSK is --实体定义,实体名GMSK

port --各个端口定义

(clk:in std_logic--clk端口,in方向,标准逻辑位类型

data:out std_logic--data端口,out方向,标准逻辑位类型

A3:out std_logic

A4:out std_logic

A5:out std_logic

A6:out std_logic

A7:out std_logic

A8:out std_logic

A9:out std_logic

A10:out std_logic

A11:out std_logic

A12:out std_logic

)

end GMSK

architecture address of GMSK is --结构体定义,结构体名address

--以下为结构体的用到的信号、数据类型等的声明

signal count_4:integer range 0 to 1- -信号count_4定义,范围为0到1的整数

signal clk_2:std_logic- -信号clk_2定义,标准逻辑位

signal clk_4:std_logic

signal b1,b2,b3,b4,b5,b6:std_logic

signal add_count:integer range 0 to 3

signal m:std_logic_vector(6 downto 0)- -信号m定义,7位的标准逻辑位矢量

begin --结构体开始

process(clk) - -进程定义,敏感信号为clk

begin

if(clk'event and clk='1') then --如果clk事件发生并且clk=‘1’执行下述表达式

m<=(m(5 downto 0)&(m(4) xor m(0) xor(not(m(6)or m(5)or m(4)or m(3)or m(2)or m(1)or m(0)))))

-- m(6)和m(5)、m(4)、m(3)、m(2)、m(1)、m(0)相或,其所得值的非和m(4)、m(0)相异或,异或后的值和6位的m信号相与,最后把所得值赋值给m。生成一共7位的m序列

clk_2<=not clk_2-- clk_2的非信号赋值给clk_2,实现二分频

if(count_4=1) then - -如果count_4=1,则执行下述表达式,实现四分频

clk_4<=not clk_4count_4<=0-- 把clk_4的非赋值给clk_4,再把‘0’赋值给count_4

else

count_4<=count_4+1- -条件count_4=1不成立时,执行count_4+1的值赋值给count_4

end if--结束if语句

b1<=m(0)--以下为赋值语句,实现移位赋值功能,把m的6位和b的6位相对应

b2<=b1

b3<=b2

b4<=b3

b5<=b4

b6<=b5

if(b6='1') then --当b6='1' 时

add_count<=add_count+1-- 把add_count+1赋值给add_count,加1功能

else

add_count<=add_count-1--当b6='1'不成立'时,add_count-1赋值给add_count,减1功能

end if

case add_count is - -case语句,象限数决定A6、A7

when 0=>A6<='0'A7<='0'- -当add_count为0时,执行A6<='0'A7<='0'

when 1=>A6<='1'A7<='0'- -当add_count为1时,执行A6<='1'A7<='0'

when 2=>A6<='0'A7<='1'- -当add_count为2时,执行A6<='0'A7<='1'

when 3=>A6<='1'A7<='1'- -当add_count为3时,执行A6<='1'A7<='1'

end case

end if

end process

- -以下为结构体的功能描述部分

data<=b3- -把b3赋值给data

A3<=clk_4- -把4分频信号clk_4赋值给A3

A4<=clk_2- -把2分频信号clk_2赋值给A4

A5<=clk- -把时钟信号clk赋值给A5

A8<=b1

A9<=b2

A10<=b3

A11<=b4

A12<=b5

end address- -结束结构体address


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11616224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存