数据寻址方式
.title "addressing.asm"
.mmregs
STACK .usect ".STACK",10h
ddate .sect ".ddate";自定义段
.word 22h,33h,44h,55h,66h,77h,88h,99h
.bss x,10
.bss y,10
.data
table: .word 1,2,3,4,5,6,7,8
.def _c_int00 ;start
.text
_c_int00: STM #STACK+10h,SP SSBX SXM
SSBX FRCT
; Immediate Addressing 立即数寻址LD #100,A ;A=100
LD #10h,4,B ;B=100h
LD #32769,A ;A=32769
LD #4000h,8,B ;B=400000h
; Absolute Addressing 绝对寻址SAMPLE .set 0088h
.bss sa,1
LD #4AB8h,A
STL A,*(SAMPLE) ;SAMPLE中内容为: 4ab8
STL A,*(sa) ;sa中内容为: 4ab8
STM #x,AR2
RPT #4
MVPD table,*AR2+ ;从x开始的5个数据为:1,2,3,4,5
STM #y,AR2
RPT #4
MVKD ddate,*AR2+ ;从y开始的5个数据为:22h,33h,44h,55h,66h
; Accumulator Addressing 累加器寻址LD #table,A
STM #y,AR2
RPT #4
READA *AR2+ ;从y开始的5个数据为: 1,2,3,4,5 ; Direct Addressing 直接寻址
ST #0001h,*(x)
ST #400h,*(x+1)
ST #1000h,*(x+127)
ST #500h,*(x+129)
LD #x,DP
LD @x,A ;A= 0001h
ADD @(x+129),A ;A= 0401h
LD @x,A
LD #(x+129),DP
ADD @(x+129),A ;A= 0501h ; Indirect Addressing 间接寻址
ST #1000h,*(0060h)
ST #2000h,*(0061h)
ST #3000h,*(0062h)
ST #4000h,*(0063h)
LD #1000h,A ;A= 1000h
STM #0060h,AR1
LD *AR1+,A ;A= 1000h
STM #0063h,AR1
LD *AR1-,A ;A= 4000h
STM #2,AR0
STM #0062h,AR1
LD *AR1-0,A ;A= 3000h
LD *AR1,B ;B= 1000h
; Memory-Mapped Register Addressing MMR寻址
STM #1234h,AR1 ;AR1= 1234h
STM #5678h,AR2 ;AR2= 5678h
STM #2,SWWSR ;SWWSR= 2
LDM AR1,A ;A= 1234h
MVMM AR2,AR3 ;AR3= 5678h
STLM A,AR4 ;AR4= 1234h
; Stack Addressing 堆栈寻址
ST #1234h,*(x)
ST #5678h,*(x+1)
ST #9abch,*(x+2)
STM #x,AR1
STM #x+3,AR2
RPT #2
PSHD *AR1+
RPT #2
POPD *AR2+ ;(x+3)=9abch
(x+4)= 5678h (x+5)= 1234h
PSHD *(x+5)
POPD *(x+6) ;(x+6)= 1234h here B here
.end
相乘累加
.title "ccc.asm"
.mmregs
STACK .usect "STACK",30h
.bss a,20
.bss x,20
.bss y,2
.def start
.data
table: .word 1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20 .word 1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20 .text
start: STM #0,SWWSR
STM #STACK+10H,SP
STM #a,AR1
RPT #39
MVPD table,*AR1+
LD #0,B
STM #a,AR2
STM #x,AR3
STM #19,BRC
RPTB done-1
MPY *AR2+,*AR3+,A
ADD A,B
done: STH B,@y
STL B,@y+1
end: B end
.end
FIR滤波器
附件1 带通滤波器的参考汇编程序
.title "firfunc1.asm"
.mmregs
.global _asmfirfunc xnew .usect "DATA1",40
xold .usect "DATA2",40
size .set 40
.sect ".coef"
COEF
.word
0xFFDC,0x001F,0x0051,0xFFE9,0xFFE6,
0xFFBA,0xFFB4,0x004B,0xFFF9,0x0069
.word
0x00A2,0xFF6F,0xFFFE,0xFF70,0xFEF4,
0x00CB,0x000B,0x00E6,0x0187,0xFEE5
.word
0x000B,0xFE7F,0xFDBF,0x0192,0xFFB5,
0x026A,0x0368,0xFDC2,0x00C0,0xFC0A
.word
0xFAA3,0x0347,0xFE3D,0x0747,0x09BB,
0xFA3D,0x052B,0xEB59,0xDC2A,0x2D57
.text
_asmfirfunc:
PSHM ST0
PSHM ST1
STLM A,AR5
LD @3,A
STLM A,AR4
LD @4,A
SUB #1,A
STLM A,BRC
SSBX FRCT
STM #xnew,AR2 ;以下6指令用于缓冲区清零,不求冲击响应时可不要
RPTZ A,#39
STL A,*AR2+
STM #xold,AR2
RPTZ A,#39
STL A,*AR2+
STM #xnew,AR2
STM #xold+(size-1),AR3
STM #size,BK
STM #-1,AR0
RPTB FIREND-1
FIR MVDD *AR5+,*AR2
ADD *AR2+0%,*AR3+0%,A
;A=x(n)+x(n-79),
AR2-->x(n-1),AR3-->x(n-78) RPTZ B,#(size-1)
FIRS *AR2+0%,*AR3+0%,COEF
;B=B+AH*a0,AH=x(n-1)+x(n-78),
AR2-->x(n-2),AR3-->x(n-77)
STH B,*AR4+
;AR2-->x(n-1),AR3-->x(n-78)
MAR *+AR2(2)%
;AR2-->x(n-39)
MAR *AR3+%
;AR3-->x(n-79)
MVDD *AR2,*AR3+0% FIREND POPM ST1
POPM ST0
RET
.end
附件2 低通滤波器的参考汇编程序
.title "firfun2.asm"
.mmregs
.global _asmfirfunc2
xnew2 .usect "DATA3",20
xold2 .usect "DATA4",20
size2 .set 20
.sect ".coef2"
COEF2
.word
-7*32768/10000,3*32768/10000,14*32768/1 0000,10*32768/10000,-16*32768/10000
.word
-38*32768/10000,-8*32768/10000,64*32768 /10000,81*32768/10000,-30*32768/10000
.word
-169*32768/10000,-118*32768/10000,162*3 2768/10000,353*32768/10000,83*32768/10 000
.word
-515*32768/10000,-689*32768/10000,247*3 2768/10000,2051*32768/10000,3523*32768 /10000
.text
_asmfirfunc2:
PSHM ST0
PSHM ST1
STLM A,AR5
LD @3,A
STLM A,AR4
LD @4,A
SUB #1,A
STLM A,BRC
SSBX FRCT
STM #xnew2,AR2 ;以下6指令用于缓冲区清零,不求冲击响应时可不要RPTZ A,#19 ;
STL A,*AR2+ ;
STM #xold2,AR2 ;
RPTZ A,#19 ;
STL A,*AR2+ ;
STM #xnew2,AR2
STM #xold2+(size2-1),AR3
STM #size2,BK
STM #-1,AR0
RPTB FIREND-1
FIR MVDD *AR5+,*AR2
ADD *AR2+0%,*AR3+0%,A
;A=x(n)+x(n-79),AR2-->x(n-1),
AR3-->x(n-78)
RPTZ B,#(size2-1)
FIRS *AR2+0%,*AR3+0%,COEF2
;B=B+AH*a0,AH=x(n-1)+x(n-78),
AR2-->x(n-2),AR3-->x(n-77)
STH B,*AR4+
;AR2-->x(n-1),AR3-->x(n-78)
MAR *+AR2(2)%
;AR2-->x(n-39)
MAR *AR3+%
;AR3-->x(n-79)
MVDD *AR2,*AR3+0% FIREND POPM ST1
POPM ST0
RET
.end
附件3 链接命令文件
-lrts.lib
-stack 0x200
MEMORY
{
PAGE 0: PROG: origin = 1a00h, length = 2600h
PAGE 1: DATA: origin = 0200h, length = 2800h
}
SECTIONS
{
.text > PROG PAGE 0
.cinit > PROG PAGE 0
.switch > PROG PAGE 0
.coef > PROG PAGE 0
.coef2 > PROG PAGE 0
vect > 3f80h PAGE 0
.bss > DATA PAGE 1
.data > DATA PAGE 1
.const > DATA PAGE 1
.stack > DATA PAGE 1
DATA1 : align (64) { } > DATA PAGE 1
DATA2 : align (64) { } > DATA PAGE 1
DATA3 : align (32) { } > DATA PAGE 1
DATA4 : align (32) { } > DATA PAGE 1 }
附件4 滤波器测试的参考C程序
#include "math.h"
//extern void asmfirfunc(int *,int *,int); #define PI 3.1415926
int k,i,A,N=240;
int x[240];
int y1[240];
int y2[240];
void wave1(k)
/*余弦波*/
{
A=32767;
for(i=0;i x[i]=(int)(A*cos(PI*i*k/10)); } main() { asm(" STM #0,SWWSR"); for(i=0;i x[i]=0; x[0]=32767; asmfirfunc(x,y1,N); asmfirfunc2(x,y2,N); for(k=1;k<9;k++) { wave1(k); asmfirfunc(x,y1,N); asmfirfunc2(x,y2,N); } IIR滤波器 .title "iir.asm" .mmregs .global _iirfunc ;start X .usect "X",5 Y .usect "Y",5 B .usect "B",5 A .usect "A",5 .data table: .word 0 ;X(N-4) .word 0 ;X(N-3) .word 0 ;X(N-2) .word 0 ;X(N-1) .word 0 ;X(N) .word 0 ;Y(N-4) .word 0 ;Y(N-3) .word 0 ;Y(N-2) .word 0 ;Y(N-1) .word 0 ;Y(N) .word 3116 ;B4=0.0951 .word -10286 ;B3=-0.3139 .word 14615 ;B2=0.4460 .word -10286 ;B1=-0.3139 .word 3116 ;B0=0.0951 .word -22082 ;A4=-0.6739 .word 31149 ;A3/3=2.8518/3 .word -30484 ;A2/5=-4.6515/5 .word 28383 ;A1/4=3.4647/4 .word 0 .text _iirfunc: PSHM AR1 PSHM AR6 PSHM AR7 PSHM ST0 PSHM ST1 STLM A,AR6 LD @6,A STLM A,AR7 LD @7,A SUB #1,A STLM A,BRC SSBX FRCT STM #X,AR1 RPT #4 MVPD #table,*AR1+ STM #Y,AR1 RPT #4 MVPD #table+5,*AR1+ STM #B,AR1 RPT #4 MVPD #table+10,*AR1+ STM #A,AR1 RPT #4 MVPD #table+15,*AR1+ STM #X+4,AR2 STM #Y+3,AR4 STM #B+4,AR5 STM #A+3,AR3 STM #5,BK STM #-1,AR0 RPTB next-1 LD *AR6+,A STL A,-1,*AR2;输入数据除2 MPY *AR2+0%,*AR5+0%,A ;Forward path MAC *AR2+0%,*AR5+0%,A MAC *AR2+0%,*AR5+0%,A MAC *AR2+0%,*AR5+0%,A MAC *AR2,*AR5+0%,A MAC *AR4,*AR3,A ;Feedback path MAC *AR4,*AR3,A ;*A1/4 MAC *AR4,*AR3,A MAC *AR4+0%,*AR3+0%,A MAC *AR4,*AR3,A ;*A2/5 MAC *AR4,*AR3,A MAC *AR4,*AR3,A MAC *AR4,*AR3,A MAC *AR4+0%,*AR3+0%,A MAC *AR4,*AR3,A ;*A3/3 MAC *AR4,*AR3,A MAC *AR4+0%,*AR3+0%,A MAC *AR4+0%,*AR3+0%,A ;*A4 MAR *AR3+0% STH A,*AR4 ;PORTW *AR4,PA0 STH A,*AR7+ next POPM ST1 POPM ST0 POPM AR7 POPM AR6 POPM AR1 RET .end 数组交换 .title "arraychange.asm" .mmregs STACK .usect "STACK",30H .bss x,20 .bss y,20 .bss a,20 .bss b,20 .data table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,1 9,20 .word 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35 ,36,37,38,39,40 .def _c_int00 .text _c_int00: STM #0,SWWSR STM #STACK+30h,SP STM #x,AR1 RPT 39 MVPD table,*AR1+ STM #x,AR2 STM #a,AR3 RPT 19 MVDD *AR2+,*AR3+ STM #y,AR2 STM #b,AR3 RPT 19 MVDD *AR2+,*AR3+ STM #b,AR2 STM #x,AR3 RPT 19 MVDD *AR2+,*AR3+ STM #a,AR2 STM #y,AR3 RPT 19 MVDD *AR2+,*AR3+ end: B end .end 数组相加 .title "arrayadd.asm" .mmregs STACK .usect "STACK",30H .bss a,20 .bss b,20 .bss x,20 .data table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,1 9,20 .word 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35 ,36,37,38,39,40 .def _c_int00 .text _c_int00: STM #0,SWWSR STM #STACK+30h,SP STM #a,AR1 RPT #39 MVPD table,*AR1+ STM #19,BRC STM #b,AR3 STM #a,AR2 STM #x,AR4 RPTB end-1 ADD *AR2+,*AR3+,A STH A,*AR4+ end: B end .end 小数乘小数 .title "xiaoshushengfa.asm" .mmregs STACK .usect ".STACK",100h .bss x,8 .bss a,8 .bss y,1 .data table: .word 3*32678/10,1*32678/10 .word 4*32678/10,2*32678/10 .word 7*32678/10,3*32678/10 .word 3*32678/10,-4*32678/10 .word 2*32678/10,5*32678/10 .word 1*32678/10,-5*32678/10 .word -3*32678/10,7*32678/10 .word 6*32678/10,-2*32678/10 .text _c_int00: SSBX F RCT STM #a,AR4 RPT #15 MVPD table,*AR4+ STM #x,AR5 STM #a,AR6 RPTZ A,#7 MAC *AR5+,*AR6+,A STH A,@y done: B done .end Example 例1. 将数据存储器中的数组x[20]复制到数组y[20]。 .title “example.asm” .mmregs STACK .usect “STACK”,30H .bss x,20 .bss y,20 .data Table .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14 .word 15,16,17,18,19,20 .def start .text Start: STM #X,AR1 RPT 19 MVPD table,*AR1+ STM #X,AR2 STM #Y,AR3 RPT 19 MVDD *AR2+,*AR3+ end: B end .end 例2. 求: i i i x a y∑ = = 20 1 .mmregs STACK: .usect “STACK”, 30H .bss a, 20 .bss x, 20 .bss y, 2 .def start .data Table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 .word 1,17 ,18,19,20,1,2,3,4,5,6,7,8,9,10 .word 11,12,13,14,15,16,17,18,19,20 .text Start: STM #0, SWWSR STM #STACK+10H,SP STM #a,AR1 RPT #39 MVPD table,*AR1+ CALL SUM end: B end SUM:STM #a,AR3 STM #x,AR4 RPTZ A,#19 MAC *AR3+,*AR4+,A STH B , @y STL B , @y+1 .end 2.1 clc close all; n=0:15; p=8;q=2; x=exp(-(n-p.^2/q; figure(1; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=2'; xk1=fft(x,16; q=4; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=8,q=4'; q=8; x=exp(-(n-p.^2/q; xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';%时域特性figure(2; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=2'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=8,q=4'; subplot(3,1,3; stem(n,abs(xk3; title('exp(-(n-p^2/q,p=8,q=8';%频域特性%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% p=8;q=8; figure(3; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8'; xk1=fft(x,16; p=13; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=13,q=8'; p=14; x=exp(-(n-p.^2/q; xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=14,q=8';%时域特性figure(4; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=8'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=13,q=8'; subplot(3,1,3; 实验二 IIR数字滤波器设计及软件实现 1.实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR数字滤波器的MATLAB实现方法。 (3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 2.实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR数字滤波器。 本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 3. 实验内容及步骤 (1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。 图1 三路调幅信号st的时域波形和幅频特性曲线 (2)要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为 DSP技术与算法实现学习报告 一.课程认识 作为一个通信专业的学生,在本科阶段学习了数字信号处理的一些基本理论知识,带着进一步学习DSP技术以及将其理论转化为实际工程实现的学习目的,选择了《DSP技术与算法实现》这门课程。通过对本课程的学习,我在原有的一些DSP基础理论上,进一步学习到了其一些实现方法,系统地了解到各自DSP芯片的硬件结构和指令系统,受益匪浅。 本门课程将数字信号处理的理论与实现方法有机的结合起来,在简明扼要地介绍数字信号处理理论和方法的基本要点的基础上,概述DSP的最新进展,并以目前国际国内都使用得最为广泛的德克萨斯仪器公式(TI,Texas Instruments)的TMS320、C54xx系列DSP为代表,围绕“DSP实现”这个重点,着重从硬件结构特点,软件指令应用和开发工具掌握出发,讲解DSP应用的基础知识,讨论各种数字信号处理算法的实现方法及实践中可能遇到的主要问题,在此基础上实现诸如FIR、IIR、FFT等基本数字信号处理算法等等。 1.TI的DSP体系 TI公司主要推出三大DSP系列芯片,即TMS320VC2000,TMS320VC5000,TMS320VC6000系列。 TMS320VC200系列主要应用于控制领域。它集成了Flash存储器、高速A/D转换器、可靠的CAN模块及数字马达控制等外围模块,适用于三相电动机、变频器等高速实时的工控产品等数字化控制化领域。 TMS320VC5000系列主要适用于通信领域,它是16为定点DSP芯片,主要应用在IP 电话机和IP电话网、数字式助听器、便携式音频/视频产品、手机和移动电话基站、调制调解器、数字无线电等领域。它主要分为C54和C55系列DSP。课程着重讲述了C54系列的主要特性,它采用改进哈弗结构,具有一个程序存储器总线和三个数据存储器总线,17×17-bit乘法器、一个供非流水的MAC(乘法/累加)使用的专用加法器,一个比较、选择、存储单元(Viterbi加速器),配备了双操作码指令集。 TMS320VC6000系列主要应用于数字通信和音频/视频领域。它是采用超长指令字结构设计的高性能芯片,其速度可以达到几十亿MIPS浮点运算,属于高端产品应用范围。 数字信号处理的步骤与注意事项,并编写1024个采样点的FFT C语言程序1. 数字信号处理 1.1 数字信号处理概述 数字信号处理是研究如何用数字或符号序列来表示信号以及如何对这些序列进行处理的一门学科。随着计算机技术的发展,数字信号处理技术得到了越来越广泛的应用,它已成为现代科学技术必不可少的工具。数字信号是数据序列,其处理实际上就是进行各种数学运算,如加、减、乘以及各种逻辑运算等等。因此,数字信号处理既可以是软件处理也可以是硬件处理。所谓软件处理,就是对所需要的运算编制程序,然后在计算机上实现,其处理灵活、方便。所谓硬件处理,就是用加法器、乘法器、延时器以及它们的各种组合来构成数字电路,以实现所需要的运算。硬件处理显然不如软件处理灵活方便,但能对数字信号进行实时处理。近年来日益广泛采用的各种数字信号处理器(如TI TMS320系列、Philps Trimedia系列等)可以认为是软硬件处理方式的结合,这种处理时用数字信号处理芯片以及存储器来组成硬件电路,所需要的运算靠特定的汇编语言编程来实现。因此,采用数字信号处理器既方便灵活,又能做到实时处理,所以数字信号处理器(DSP)已经越来越广泛地应用于包括通信在内的各个领域之中。 1.2 数字信号处理的优点 (1)精度高 数字系统的特性不因环境的变化而变化,计算精度是模拟系统所无法相比的,运算位数由8位提高到16位、32位、64位。 (2)可靠性高 模拟系统中各种参数受温度、环境影响较大,因而易出现感应、杂散效应,甚至会出现震荡等等;而数字系统受温度、环境影响较小。模拟信号受到干扰即产生失真,而数字信号由于只有两种状态,因此,所受的干扰只要在一定范围以内,就不会产生影响,这就是说,数字信号抗干扰能力强。另外,如果用数字信号进行传输,在中继站还可以再生。总的说来,信号的数字处理可靠性高。(3)灵活性强 可以通过改变数字信号系统的参数来改变系统的性能。数字信号的灵活性还表现在可以利用一套计算设备同时处理多路相互独立的信号,即所谓的“时分复用”,这在数字电话系统中是非常有用的技术。 (4)便于大规模集成化 数字部件具有高度的规范性,易于实现大规模集成化和大规模生产,数字系统体积小、重量轻。 (5)数字信号便于加密处理 由于数字信号实际上为数据序列,因此便于加密运算处理。 现代数字信号处理复习题 一、填空题 1、平稳随机信号是指:概率分布不随时间推移而变化的随机信号,也就是说,平稳随机信号的统计特性与起始 时间无关,只与时间间隔有关。 判断随机信号是否广义平稳的三个条件是: (1)x(t)的均值为与时间无关的常数:C t m x =)( (C 为常数) ; (2)x(t)的自相关函数与起始时间无关,即:)(),(),(ττx i i x j i x R t t R t t R =+=; (3)信号的瞬时功率有限,即:∞<=)0(x x R D 。 高斯白噪声信号是指:噪声的概率密度函数满足正态分布统计特性,同时其功率谱密度函数是常数的一类噪 声信号。 信号的遍历性是指:从随机过程中得到的任一样本函数,好象经历了随机过程的所有可能状态,因此,用一个 样本函数的时间平均就可以代替它的集合平均 。 广义遍历信号x(n)的时间均值的定义为: ,其时间自相关函数的定义为: 。 2、连续随机信号f(t)在区间上的能量E 定义为: 其功率P 定义为: 离散随机信号f(n)在区间 上的能量E 定义为: 其功率P 定义为: 注意:(1)如果信号的能量0 3.6 常见的算法实现 在实际应用中虽然信号处理的方式多种多样,但其算法的基本要素却大多相同,在本节中介绍几种较为典型的算法实现,希望通过对这些例子(单精度,16bit )的分析,能够让大家熟悉DSP 编程中的一些技巧,在以后的工作中可以借鉴,达到举一反三的效果。 1. 函数的产生 在高级语言的编程中,如果要使用诸如正弦、余弦、对数等数学函数,都可以直接调用运行库中的函数来实现,而在DSP 编程中操作就不会这样简单了。虽然TI 公司提供的实时运行库中有一些数学函数,但它们所耗费的时间大多太长,而且对于大多数定点程序使用双精度浮点数的返回结果有点“大材小用”的感觉,因此需要编程人员根据自身的要求“定制”数学函数。实现数学函数的方法主要有查表法、迭代法和级数逼近法等,它们各有特点,适合于不同的应用。 查表法是最直接的一种方法,程序员可以根据运算的需要预先计算好所有可能出现的函数值,将这些结果编排成数据表,在使用时只需要根据输入查出表中对应的函数值即可。它的特点是速度快,但需要占用大量的存储空间,且灵活度低。当然,可以对上述查表法作些变通,仅仅将一些关键的函数值放置在表中,对任意一个输入,可根据和它最接近的数据采用插值方法来求得。这样占用的存储空间有所节约,但数值的准确度有所下降。 迭代法是一种非常有用的方法,在自适应信号处理中发挥着重要的作用。作为函数产生的一种方法,它利用了自变量取值临近的函数值之间存在的关系,如时间序列分析中的AR 、MA 、ARMA 等模型,刻画出了信号内部的特征。因为它只需要存储信号模型的参量和相关的状态变量,所以所占用的存储空间相对较少,运算时间也较短。但它存在一个致命的弱点,由于新的数值的产生利用了之前的函数值,所以它容易产生误差累积,适合精度要求不高的场合。 级数逼近法是用级数的方法在某一自变量取值范围内去逼近数学函数,而将自变量取值在此范围外的函数值利用一些数学关系,用该范围内的数值来表示。这种方法最大的优点是灵活度高,且不存在误差累积,数值精度由程序员完全控制。该方法的关键在于选择一个合适的自变量取值区间和寻找相应的系数。 下面通过正弦函数的实现,具体对上述三种方法作比较。 查表法较简单,只需要自制一张数据表,也可以利用C5400 DSP ROM 内的正弦函数表。 迭代法的关键是寻找函数值间的递推关系。假设函数采样时间间隔为T ,正弦函数的角频率为ω,那么可以如下推导: 令()()()T T ω?β?αω?-+=+sin sin sin 等式的左边展开为 T T side left ω?ω?sin cos cos sin _+= 等式的右边展开为 ()T T side right ω?βωα?sin cos cos sin _-+= 对比系数,可以得到1,cos 2-==βωαT 。令nT =?,便可以得到如下的递推式: [][][]21cos 2---=n s n s T n s ω 数字信号处理实验实验一离散时间信号与系统及MA TLAB实现 1.单位冲激信号: n = -5:5; x = (n==0); subplot(122); stem(n, x); 2.单位阶跃信号: x=zeros(1,11); n0=0; n1=-5; n2=5; n = n1:n2; x(:,n+6) = ((n-n0)>=0); stem(n,x); 3.正弦序列: n = 0:1/3200:1/100; x=3*sin(200*pi*n+1.2); stem(n,x); 4.指数序列 n = 0:1/2:10; x1= 3*(0.7.^n); x2=3*exp((0.7+j*314)*n); subplot(221); stem(n,x1); subplot(222); stem(n,x2); 5.信号延迟 n=0:20; Y1=sin(100*n); Y2=sin(100*(n-3)); subplot(221); stem(n,Y1); subplot(222); stem(n,Y2); 6.信号相加 X1=[2 0.5 0.9 1 0 0 0 0]; X2=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; X=X1+X2; stem(X); 7.信号翻转 X1=[2 0.5 0.9 1]; n=1:4; X2=X1(5-n); subplot(221); stem(n,X1); subplot(222); stem(n,X2); 8.用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 9.用MA TLAB计算差分方程 当输入序列为时的输出结果。 N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n'); ylabel('幅度') 10.冲激响应impz N=64; a=[0.8 -0.44 0.36 0.22]; 一、实验目的 1. 通过本次实验回忆并熟悉MATLAB这个软件。 2. 通过本次实验学会如何利用MATLAB进行序列的简单运算。 3. 通过本次实验深刻理解理论课上的数字信号处理的一个常见方法——对时刻n的样本附近的一些样本求平均,产生所需的输出信号。 3. 通过振幅调制信号的产生来理解载波信号与调制信号之间的关系。 二、实验内容 1. 编写程序在MATLAB中实现从被加性噪声污染的信号中移除噪声的算法,本次试验采用三点滑动平均算法,可直接输入程序P1.5。 2. 通过运行程序得出的结果回答习题Q1.31-Q1.33的问题,加深对算法思想的理解。 3. 编写程序在MATLAB中实现振幅调制信号产生的算法,可直接输入程序P1.6。 4. 通过运行程序得出的结果回答习题Q1.34-Q1.35的问题,加深对算法思想的理解。 三、主要算法与程序 1. 三点滑动平均算法的核心程序: %程序P1.5 %通过平均的信号平滑 clf; R=51; d=0.8*(rand(R,1)-0.5);%产生随噪声 m=0:R-1; s=2*m.*(0.9.^m);%产生为污染的信号 x=s+d';%产生被噪音污染的信号 subplot(2,1,1); plot(m,d','r-',m,s,'g--',m,x,'b-.'); xlabel('时间序号n');ylabel('振幅'); legend('d[n]','s[n]','x[n]'); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2); plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n]','s[n]'); xlabel('时间序号n');ylabel('振幅'); 2. 振幅调制信号的产生核心程序:(由于要几个结果,因此利用subplot函数画图) %程序P1.6 %振幅调制信号的产生 n=0:100; m=0.1;fH=0.1;fL=0.01; m1=0.3;fH1=0.3;fL1=0.03; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; xH1=sin(2*pi*fH1*n); xL1=sin(2*pi*fL1*n); y1=(1+m1*xL).*xH; y2=(1+m*xL).*xH1; y3=(1+m*xL1).*xH; subplot(2,2,1); stem(n,y); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.1;fH=0.1;fL=0.01;'); subplot(2,2,2); stem(n,y1); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.01;'); subplot(2,2,3); stem(n,y2); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.3;fL=0.01;'); subplot(2,2,4); stem(n,y3); grid; 数字信号处理课程设计 设计题目: 姓名: 学号: 院系班级: 组次: 指导教师: 时间:2015年11月21日——2015年12月6日 摘要 基于 MATLAB 的图像边缘检测算法的研究和实现 图像边缘是图像的最基本的特征。所谓边缘,就是指图像局部强度变化最明显的部分,存在于区域与区域、目标与目标、目标与背景、基元与基元之间,包含有图像处理中用于识别的关键信息。边缘检测是数字图像处理中,最基础也是最重要的环节之一。本文介绍了六种经典的边缘检测算子,包括 Roberts 算子,Sobel 算子,Canny算子,Prewitt 算子,LOG 算法。并且利用 MATLAB 系统所提供的相关函数等,对同一副图像结合用这些不同的算子分别进行处理,分析并得到他们处理图像的特点。比较传统的边缘检测算子,因为是基于图像函数的一阶导数进行考察的,因而它们具有共同的特点是计算简单、速度较快,但是对噪声都比较敏感。LOG 算法和 Canny算法,都是先对图像进行平滑去噪,抗噪性能较好,但是会损失一些边缘信息,其中 LOG算法比较适合处理渐变灰度图像,而 Canny 算子更适合处理阶跃型边缘图像。小波变换边缘检测法,则能够很好的保留图像的边缘信息,更适合处理小阵列图像。 关键词: MATLAB;图像处理;边缘检测;微分算子 目录 第一章绪论 (4) 1.1设计目的与要求 (4) 1.2叙述国内外研究动态 (5) 第二章软件设计- 基于MatLab的边缘检测算法 (6) 2.1 MatLab简介 (6) 2.2边缘检测算法原理 (7) 2.2.1 Roberts 边缘算子 (7) 2.2.2 Sobel 边缘算子 (8) 2.2.3 Prewitt 边缘算子 (8) 2.2.4 Log 边缘算子 (8) 2.2.5 Canny 边缘算子 (8) 2.3边缘检测算法--测试程序 (9) 第三章实验结果及分析 (13) 3.1 Roberts算子检测图像边缘的实现 (13) 3.2 Sobel算子检测图像边缘的实现 (14) 3.3 Prewitt算子检测图像边缘的实现 (15) 3.4高斯一拉普拉斯LOG算子检测图像边缘的实现 (16) 3.5 Canny算子检测图像边缘的实现 (17) 第四章总结与心得体会 (20) 参考文献 (21) 致谢 (22) 实验一 MATLAB 仿真软件的基本操作命令和使用方法 实验容 1、帮助命令 使用 help 命令,查找 sqrt (开方)函数的使用方法; 2、MATLAB 命令窗口 (1)在MATLAB 命令窗口直接输入命令行计算3 1)5.0sin(21+=πy 的值; (2)求多项式 p(x) = x3 + 2x+ 4的根; 3、矩阵运算 (1)矩阵的乘法 已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B (2)矩阵的行列式 已知A=[1 2 3;4 5 6;7 8 9],求A (3)矩阵的转置及共轭转置 已知A=[1 2 3;4 5 6;7 8 9],求A' 已知B=[5+i,2-i,1;6*i,4,9-i], 求B.' , B' (4)特征值、特征向量、特征多项式 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征值、特征向量、特征多项式; (5)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9];求A 中第3 列前2 个元素;A 中所有列第2,3 行的元素; 4、Matlab 基本编程方法 (1)编写命令文件:计算1+2+…+n<2000 时的最大n 值; (2)编写函数文件:分别用for 和while 循环结构编写程序,求 2 的0 到15 次幂的和。 5、MATLAB基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π] (2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] (3)绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (a)线形为点划线、颜色为红色、数据点标记为加号; (b)坐标轴控制:显示围、刻度线、比例、网络线 (c)标注控制:坐标轴名称、标题、相应文本; >> clear; 1. 矩形窗: 程序代码: wp=0.2*pi; wst=0.3*pi; tr_width=wst-wp; N(1)=ceil(1.8*pi/tr_width)+1; w_boxcar=boxcar(N(1))'; N(2)=ceil(6.2*pi/tr_width)+1; w_hanning=hanning(N(2))'; N(3)=ceil(6.6*pi/tr_width)+1; w_hamming=hamming(N(3))'; N(4)=ceil(11*pi/tr_width)+1; w_blackman=blackman(N(4))'; N(5)=ceil((50-7.95)/(2.285*tr_width)+1); w_kaiser=kaiser(N(5),0.1102*(50-8.7))'; n=0:(N(1)-1); wc=(wp+wst)/2; alpha=(N(1)-1)/2; hd=(wc/pi)*sinc(wc/pi*(n-alpha)); h=hd.*w_boxcar; figure(1); subplot(221);stem(n,hd,'filled'); axis tight;xlabel('n');ylabel('hd(n)'); [Hr,w1]=zerophase(h); subplot(222);plot(w1/pi,Hr); axis tight;xlabel('\omega/\pi');ylabel('H(\omega)'); subplot(223);stem(n,h,'filled'); axis tight;xlabel('n');ylabel('h(n)'); [H,w]=freqz(h,1); subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi');ylabel('db'); grid on 程序结果: 离散傅里叶变换 一、问题的提出:前已经指出,时域里的周期性信号在频域里表现为离散的值,通常称为谱线;而时域里的离散信号(即采样数据)在频域里表现为周期性的谱。 推论:时域里的周期性的离散信号,在频域里对应为周期性的离散的谱线。 由于傅里叶变换和它的反变换的对称性,我们不妨对称地把前者称为时域的采样,后者称为频域的采样;这样,采用傅里叶变换,时域的采样可以变换成为频域的周期性离散函数,频域的采样也可以变换成列域的周期性离散函数,这样的变换被称为离散傅里叶变换,简称为DFT。图3-1就是使用采样函数序列作离散傅里叶变换的简单示例。 (a )时域的采样在频域产生的周期性 (b )频域的采样在时域产生的周期性 图3-1 采样函数的离散傅里叶变换 上图就是使用采样函数序列作离散傅立叶变换的简单示例,在时域间隔为s t 的采样函数 序列的DFT 是频域里间隔为s s t f 1 =的采样函数序列;反之,频域里间隔为s f 的采样函数序列是时域里间隔为w W f T 1=的采样函数序列,如图3-1(b)所示。 由于在离散傅立叶变换中,时域和频域两边都是离散值,因此它才是真正能作为数字信号处理的变换,又由于变换的两边都表现出周期性,因此变换并不需要在),(+∞-∞区间进行,只需讨论一个有限周期里的采样作变换就可以保留全部信息。 表3-1为傅立叶变换和傅立叶级数的关系 二、DFT 的定义和性质 离散傅里叶变换(DFT )的定义为: 1、非周期离散时间信号)(n x 的Fourier 变换定义为:ωωωd e n x e X n j j -∞ ∞-∑ =)()( (1) 反变换:ωπωππωd e e X n x n j j ?-= )(21)( )(ωj e X 的一个周期函数(周期为)π 2,上式得反变换是在)(ωj e X 的一个周期内求积分的。这里数字信号的频率用ω来表示,注意ω与Ω有所不同。设s f 为采样频率,则采样周期为 f T 1 =,采样角频率T s π2=Ω,数字域的频率s s f πω2= 式1又称为离散时间Fourier 变换(DTFT )2、周期信号的离散Fourier 级数(DFS ) 三、窗函数和谱分析 1、谱泄露和栅栏效应 离散傅立叶变换是对于在有限的时间间隔(称时间窗)里的采样数据的变换,相当于对数据进行截断。这有限的时间窗既是DFT 的前提,同时又会在变换中引起某些不希望出现的结果,即谱泄露和栅栏效应。 1)谱泄露 以简单的正弦波的DFT 为例,正弦波具有单一的频率,因而在无限长的时间的正弦波,应该观察到单一δ函数峰,如下图示,但实际上都在有限的时间间隔里观察正弦波,或者在时间窗里作DFT ,结果所得的频谱就不再是单一的峰,而是分布在一个频率范围内,下图(b )示。这样信号被时间窗截断后的频谱不再是它真正的频谱,称为谱泄露。 实验一熟悉MATLAB环境 一、实验目的 (1)熟悉MATLAB的主要操作命令。 (2)学会简单的矩阵输入和数据读写。 (3)掌握简单的绘图命令。 (4)用MATLAB编程并学会创建函数。 (5)观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 实验程序: A=[1 2 3 4]; B=[3 4 5 6]; n=1:4; C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B; subplot(4,2,1);stem(n,A,'fill');xlabel ('时间序列n');ylabel('A'); subplot(4,2,2);stem(n,B,'fill');xlabel ('时间序列n ');ylabel('B'); subplot(4,2,3);stem(n,C,'fill');xlabel ('时间序列n ');ylabel('A+B'); subplot(4,2,4);stem(n,D,'fill');xlabel ('时间序列n ');ylabel('A-B'); subplot(4,2,5);stem(n,E,'fill');xlabel ('时间序列n ');ylabel('A.*B'); subplot(4,2,6);stem(n,F,'fill');xlabel ('时间序列n ');ylabel('A./B'); subplot(4,2,7);stem(n,G,'fill');xlabel ('时间序列n ');ylabel('A.^B'); 运行结果: 1.设()u n 是离散时间平稳随机过程,证明其功率谱()w 0S ≥。 证明:将()u n 通过冲激响应为()h n 的LTI 离散时间系统,设其频率响应()w H 为 ()001,w -w w 0, w -w w H w ?? =? >??? 输出随机过程()y n 的功率谱为()()()2y S w H w S w = 输出随机过程()y n 的平均功率为()()()00201 1r 022w w y y w w S w dw S w dw π π π+?-?= =?? 当频率宽度w 0???→时,上式可表示为()()()01 r 00y S w w π =?≥ 由于频率0w 是任意的,所以有()w 0 S ≥ 3、已知:状态方程 )()1,()1()1,()(1n n n n x n n F n x ν-Γ+--=观测方程 )()()()(2n n x n C n z ν+= )()]()([111n Q n n E H =νν )()]()([222n Q n n E H =νν 滤波初值 )]0([)|0(0x E x =ξ } )]]0([)0()]][0([)0({[)0(H x E x x E x E P --= 请简述在此已知条件下卡尔曼滤波算法的递推步骤。 解:步骤1 状态一步预测,即 1 *11)|1(?)1,()|(N n n C n x n n F n x ∈--=--∧ ξξ 步骤2 由观测信号z(n)计算新息过程,即 1*11)|(?)()()|(?)()(M n n C n x n C n z n z n z n ∈-=-=--ξξα 步骤3 一步预测误差自相关矩阵 N N H H C n n n Q n n n n F n P n n F n n P *1)1,()1()1,() 1,()1()1,()1,(∈-Γ--Γ+---=- 步骤4 新息过程自相关矩阵M M H C n Q n C n n P n C n A *2)()()1,()()(∈+-= 步骤5 卡尔曼增益M N H C n A n C n n P n K *1)()()1,()(∈-=- 或 )()()()(1 2n Q n C n P n K H -= 步骤6 状态估计 1*1)()()|(?)|(?N n n C n n K n x n x ∈+=-αξξ 步骤7 状态估计自相关矩阵 N N C n n P n C n K I n P *)1,()]()([)(∈--= 或 )()()()]()()[1,()]()([)(2n K n Q n K n C n K I n n P n C n K I n P H H +---= 步骤8 重复步骤1-7,进行递推滤波计算 4、经典谱估计方法: 页脚内容1 实验三 频域信号处理 1. 实验目的 (1) 学习信号DFT 变换的matlab 实现; (2) 学习fft 的matlab 实现; (3) 验证DFT 的相关性质。 2. 思考题 (1) 若()()()sin sin 4x n n n ππ=+是一个128点的有限长序列,求其128点DFT 结果; 程序如下: 求DFT 变换矩阵A : clc; clear; N=128; A=dftmtx(N) Ai=conj(dftmtx(N)); n=0:(N-1); k=0:(N-1); nk=n'*k; Wn=(sin(pi/8)+sin(pi/4)).^nk Wk=conj(Wn)/N; 求128点的DFT(分别用FFT函数和dftmtx函数) clc; clear; N=128; n=0:N-1; x=sin(pi/8*n)+sin(pi/4*n); subplot(3,1,1) plot(n,x); grid on title('原图') y1=fft(x,N); A=dftmtx(N); 页脚内容2 y2=x(1:N)*A; subplot(3,1,2) plot(n,y1) grid on title('FFT') subplot(3,1,3) plot(n,y2) grid on title('dftmtx') 程序运行结果如图1所示: 原图 -13FFT -13dftmtx 页脚内容3 页脚内容4 图 1 (2) 对模拟信号()()()2sin 45sin 8x t t t ππ=+,以0.01t n =,()0:1n N =-进行采样,求 a ) N =40点的FFT 幅度谱,从图中能否观察出两个频谱分量; b ) 提高采样点数值N=128,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?信号的两个模拟频率和数字频率分别为多少?FFT 频谱分析结果和理论上是否一致? 程序如下: clc; clear; N=40; n=0:N-1; t=0.01*n x=2*sin(4*pi*t)+5*sin(8*pi*t); subplot(2,1,1) plot(x(1:N)) grid on title('原图') y1=fft(x,N); 文件名:tstem.m(实验一、二需要) 程序: f unction tstem(xn,yn) %时域序列绘图函数 %xn:被绘图的信号数据序列,yn:绘图信号的纵坐标名称(字符串)n=0:length(xn)-1; stem(n,xn,'.'); xlabel('n');ylabel('yn'); axis([0,n(end),min(xn),1.2*max(xn)]); 文件名:tplot.m(实验一、四需要) 程序: function tplot(xn,T,yn) %时域序列连续曲线绘图函数 %xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) %T为采样间隔 n=0;length(xn)-1;t=n*T; plot(t,xn); xlabel('t/s');ylabel(yn); axis([0,t(end),min(xn),1.2*max(xn)]); 文件名:myplot.m(实验一、四需要) %(1)myplot;计算时域离散系统损耗函数并绘制曲线图。function myplot(B,A) %B为系统函数分子多项式系数向量 %A为系统函数分母多项式系数向量 [H,W]=freqz(B,A,1000) m=abs(H); plot(W/pi,20*log10(m/max(m)));grid on; xlabel('\omega/\pi');ylabel('幅度(dB)') axis([0,1,-80,5]);title('损耗函数曲线'); 文件名:mstem.m(实验一、三需要) 程序: function mstem(Xk) %mstem(Xk)绘制频域采样序列向量Xk的幅频特性图 M=length(Xk); k=0:M-1;wk=2*k/M;%产生M点DFT对应的采样点频率(关于pi归一化值) stem(wk,abs(Xk),'.');box on;%绘制M点DFT的幅频特性图xlabel('w/\pi');ylabel('幅度'); axis([0,2,0,1.2*max(abs(Xk))]); 文件名:mpplot.m(实验一需要) “现代数字信号处理”复习思考题 变换 1.给出DFT的定义和主要性质。 2.DTFT与DFT之间有什么关系? 3.写出FT、DTFT、DFT的数学表达式。 离散时间系统分析 1.说明IIR滤波器的直接型、级联型和并联型结构的主要特点。 2.全通数字滤波器、最小相位滤波器有何特点? 3.线性相位FIR滤波器的h(n)应满足什么条件?其幅度特性如何? 4.简述FIR离散时间系统的Lattice结构的特点。 5.简述IIR离散时间系统的Lattice结构的特点。 采样 1.抽取过程为什么要先进行滤波,此滤波器应逼近什么样的指标? 维纳滤波 1.画出Wiener滤波器结构,写出平稳信号下的滤波方程,导出Wiener-Hopf方程。 2.写出最优滤波器的均方误差表示式。 3.试说明最优滤波器满足正交性原理,即输出误差与输入信号正交。 4.试说明Wiener-Hopf方程和Yule-Walker方程的主要区别。 5.试说明随机信号的自相关阵与白噪声的自相关阵的主要区别。 6.维纳滤波理论对信号和系统作了哪些假设和限制? 自适应信号处理 1.如何确定LMS算法的μ值,μ值与算法收敛的关系如何? 2.什么是失调量?它与哪些因素有关? 3.RLS算法如何实现?它与LMS算法有何区别? 4.什么是遗忘因子,它在RLS算法中有何作用,取值范围是多少? 5.怎样理解参考信号d(n)在自适应信号处理处理中的作用?既然他是滤波器的期望响应,一般在滤波前是不知道的,那么在实际应用中d(n)是怎样获得的,试举两个应用例子来加以说明。 功率谱估计 1.为什么偏差为零的估计不一定是正确的估计? 2.什么叫一致估计?它要满足哪些条件? 3.什么叫维拉-辛钦(Wiener-Khinteche)定理? 4.功率谱的两种定义。 5.功率谱有哪些重要性质? 6.平稳随机信号通过线性系统时输入和输出之间的关系。 7.AR模型的正则方程(Yule-Walker方程)的导出。 8.用有限长数据估计自相关函数的估计质量如何? 9.周期图法谱估计的缺点是什么?为什么会产生这些缺点? 10.改进的周期图法谱估计有哪些方法?它们的根据是什么? 11.既然隐含加窗有不利作用,为什么改进周期图法谱估计是还要引用各种窗? 12.经典谱估计和现代谱估计的主要差别在哪里? 13.为什么AR模型谱估计应用比较普遍? 14.对于高斯随机过程最大熵谱估计可归结为什么样的模型? 15.为什么Levison-Durbin快速算法的反射系数的模小于1? 16.什么是前向预测?什么是后向预测? 17.AR模型谱估计自相关法的主要缺点是什么? 18.Burg算法与Levison-Durbin算法的区别有哪些? 子程序: function myplot(B,A) %myplot(B,A) %时域离散系统损耗函数绘图 %B为系统函数分子多项式系数向量 %A为系统函数分母多项式系数向量 [H,W]=freqz(B,A,1000); m=abs(H); plot(W/pi,20*log10(m/max(m)));grid on; xlabel('\omega/\pi');ylabel('幅度(dB)') axis([0,1,-80,5]);title('损耗函数曲线'); function tplot(xn,T,yn) %时域序列连续曲线绘图函数 % xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) % T为采样间隔 n=0:length(xn)-1;t=n*T; plot(t,xn); xlabel('t/s');ylabel(yn); axis([0,t(end),min(xn),1.2*max(xn)]) 程序: %实验4程序exp4.m % IIR数字滤波器设计及软件实现 clear all;close all Fs=10000;T=1/Fs; %采样频率 %调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st st=mstg; %低通滤波器设计与实现========================================= fp=280;fs=450; wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; %DF指标(低通滤波器的通、阻带边界频)[N,wp]=ellipord(wp,ws,rp,rs); %调用ellipord计算椭圆DF阶数N和通带截止频率wp [B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A y1t=filter(B,A,st); %滤波器软件实现 % 低通滤波器设计与实现绘图部分 figure(2);subplot(3,1,1); myplot(B,A); %调用绘图函数myplot绘制损耗函数曲线 yt='y_1(t)'; subplot(3,1,2);tplot(y1t,T,yt); %调用绘图函数tplot绘制滤波器输出波形 %带通滤波器设计与实现==================================================== fpl=440;fpu=560;fsl=275;fsu=900; wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];rp=0.1;rs=60;数字信号处理实验程序2.
数字信号处理实验二报告
DSP技术与算法实现学习报告
数字信号处理的步骤与注意事项,并编写1024个采样点的FFT C语言程序
现代数字信号处理复习题
DSP常见算法的实现
数字信号处理实验及参考程序
数字信号处理实验一
数字信号处理程序课程设计
数字信号处理实验报告(实验1_4)
数字信号处理窗函数程序
数字信号处理 详细分析 采样
数字信号处理实验全部程序MATLAB
现代数字信号处理习题
数字信号处理DFTMATLAB程序
数字信号处理上机实验代码
2012《现代数字信号处理》课程复习...
数字信号处理实验