实验指导书 3-6章(1)
更新时间:2024-04-26 09:32:01 阅读量: 综合文库 文档下载
- 电路实验指导书推荐度:
- 相关推荐
实验三 离散傅里叶变换
一、实验目的
1. 学习编制离散傅里叶变换程序.
2. 理解DFT在数字信号处理中的核心地位和作用. 二、实验内容
1. 编制计算离散傅里叶变换程序. 2. 用编制程序处理时间抽样信号.
3. 根据实序列离散傅里叶变换的对称性,初步判定程序的正确性. 三、实验说明
1.离散傅里叶变换公式如下
N?1X(k)? ??n?0N?1n?0x(n)e?j2?Nnk?x(n)cos??2???2??nk??j?x(n)sin?nk??N??N?n?0N?1
构造离散傅里叶正、反变换函数的MATLAB实现程序如下,其中dft(xn,N)为离散傅里叶正变换,idft(Xk,N)为离散傅里叶反变换:
---------------------------------------------------------------------------------------------------------------
function [Xk]=dft(xn,N) n=[0:1:N-1]; k=n;
WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk; Xk=xn*WNnk
function [xn]=idft(Xk,N) n=[0:1:N-1]; k=n;
WN=exp(-j*2*pi/N); nk=n'*k;
WNnk=WN.^(-nk); xn=(Xk*WNnk)/N;
---------------------------------------------------------------------------------------------------------------
2.利用离散傅里叶变换函数求解序列傅里叶变换的MATLAB实现程序如下(N=8, a=0.7)。
---------------------------------------------------------------------------------------------------------------
clear
N=8; a=0.7; n=[0:7]; xn=a.^n; Xk=dft(xn,N); subplot(3,1,1)
stem(n,xn,'.k');axis([0,8,0,1.5]) subplot(3,1,2)
stem(n,abs(Xk),'.k');axis([0,8,0,5]) subplot(3,1,3)
stem(n,angle(Xk),'.k');axis([0,8,-1.5,1.5]) 3.下图所示为X?k?的幅度特性与相位特性。
其中,N为总的抽样点数;T为抽样时间间隔. 在这种条件下分析结果中的X?k?,以其它分析.
4.在实验中同学们会发现,抽样信号分析得到的X?k?的幅度与连续傅里叶变换分析该信号幅度不相同,这是值得大家深入讨论的问题.
N2点左右对称,说明该程序基本正确,可以进行
3.14 已知序列x(n)=(3,11,7,0,-1,4,2),令y(n)为x(n)加入噪声干扰并移位后的序列:
y(n)?x(n-2)??(n)
其中,?(n)为具有零均值和单位方差的高斯序列。用MATLAB语言计算x(n)和y(n)之间的互相关。
3.14 解:程序及运行结果如下。
Clear n=[1:7];
xn=zeros(1,length(n)); xn2=xn;wn=xn;
xn(1:7)=[3,11,7,0,-1,4,2]; %signal xn2(1:7)=[4,2,3,11,7,0,-1]; Tlay signal wn(1:7)=randn(1,7); %noise yn=xn+wn;
%signal+noise
xyn=conv(xn,yn); subplot(2,2,1);
stem(n,xn,'k');title('x(n)'); subplot(2,2,2);
stem(n,xn2,'k');title('x(n-2)'); subplot(2,2,3);
stem(n,wn,'k');title('w(n)'); subplot(2,2,4);
stem(1:(2*length(n)-1),xyn,'k');title('xy(n)');
四、实验报告要求
1.整理好经过运行并证明是正确的程序,并且加上详细的注释.
2.用连续傅里叶变换分析(被抽样的)连续信号,将其结果与抽样信号的离散傅里叶变换结果相比较,你能发现什么问题?如何解释?
3.计算抽样序列的连续傅里叶变换,将其结果与抽样序列的离散傅里叶变换结果相比较,你又能发现什么问题?如何解释? 五、实验结果分析
实验四 快速傅里叶变换
一、 实验目的
1. 学习时间抽选奇偶分解FFT算法.
2. 深入理解和掌握时间抽选奇偶分解FFT计算程序. 3. 研究如何利用FFT程序分析确定性时间连续信号. 二、实验内容
1. 用MATLAB编程比较DFT和FFT的运算时间 2. 用MATLAB编程实现DFT和FFT的运算. 已知有限长序列x(n)长度为N =4, 且:
1 n?0 x(n)? 2 n?1 –1 n?2
3 n?3 用FFT求X(k),再用IFFT求x(n).
3. 用MATLAB程序分析FFT取不同长度时,序列x(n)的频谱变化情况. 三、实验说明
1.可以用以下MATLAB 程序比较DFT和 FFT的运算时间:
---------------------------------------------------------------------------------------------------------------
N=1024; M=80;
x=[1:M,zeros(1,N-M)]; t=cputime; y1=fft(x,N); Time_fft=cputime-t; t1=cputime; y2=dft(x,N); Time_dft=cputime-t1; t2=cputime;
---------------------------------------------------------------------------------------------------------------
Time_dft = 6.0290
Time_fft =
0.0100
由此可见FFT算法比直接计算DFT速度快得多。
2.利用快速傅里叶变换函数求解FFT和 IFFT运算的MATLAB实现程序如下: ---------------------------------------------------------------------------------------------------------------
clear xn=[1,2,-1,3]; X=fft(xn) x=ifft(X)
---------------------------------------------------------------------------------------------------------------
X =[ 5.0000,2.0000 + 1.0000i,-5.0000,2.0000 - 1.0000i] x =[ 1,2,-1,3]
3.设x(n)是长度为N = 6的矩形序列,用MATLAB分析FFT取不同长度时x(n)的频谱变化。
N=8,32,64时x(n)的FFT MATLAB实现程序如下 ---------------------------------------------------------------------------------------------------------------
x=[1,1,1,1,1,1]; N=8;y1=fft(x,N);
n=0:N-1;subplot(3,1,1);stem(n,abs(y1),'.k');axis([0,9,0,6]); N=32;y2=fft(x,N);
n=0:N-1;subplot(3,1,2);stem(n,abs(y2),'.k');axis([0,40,0,6]); N=64;y3=fft(x,N);
n=0:N-1;subplot(3,1,3);stem(n,abs(y3),'.k');axis([0,80,0,6]);
---------------------------------------------------------------------------------------------------------------
x(n)的频谱如下图所示, N值取的越大就越接近序列真正的频谱。
4.8 设x?n?是长度为ML的长序列,其中M?1,L?1,把x?n?分成M段,记为xm?n?,
m?1,2,?,M,每段长度为L。
?x?n?xm?n????0
mM?n??m?1?M?1其他M?1
x?n???x?n?
mM?1m?0设h(n)为L点冲激响应,则
y?n??x?n??h?n??M?1?x?n??h?n???mym?n?
m?0m?0ym?n??xm?n??h?n?
显然,ym?n?是2L?1点序列。在这种方法中,需要保存中间卷积结果,在相加之前进行恰当的重叠,形成y?n?。
(1) 利用循环卷积,开发一个MATLAB函数实现重叠相加法;
(2) 利用(1)开发的函数采用基-2FFT,编写一个高速重叠相加分段卷积的MATLAB程序。
4.8 解:程序及运行结果如下。 (1)循环卷积子函数:
function fn=circonvt(x1,x2,N);
%circonvt函数实现输入序列x1和x2的循环倦积,fn为输出序列 %N为循环卷积长度
if(length(x1)>N|length(x2>N)%判断输入信号的长度 error('N的长度必须大于输入数据的长度'); end
x1=[x1,zeros(1,N-length(x1))]; x2=[x2,zeros(1,N-length(x2))]; m=0:N-1; x=zeros(N,N); for n=0:N-1
x(:,n+1)=x2(mod((n-m),N)+1)'; end; fn=x1*x; 主函数:
function[y]=ovrlpadd(x,h,L) x=input('请输入x序列:'); h=input('请输入y序列:'); L=input('请输入段长L:'); lenx=length(x);
%x的长度
M=length(h); %h的长度
N1=L+M-1; %圆周卷积点数,即每一个输出序列Yi的长度 m=rem(lenx,L); %求余 if m=0
x=[x zeros(1,L-m)]; %末尾补零,使每段长度为N K=floor(lenx/L)+1; %段数 else x=x;
K=floor(lenx/L); end
ytemp=zeros(1,N1-L); %N1-N为重叠部分,使其初始化为零 n1=1;n2=L; for k=1;K xk=x(n1:n2);
Y(k,:)=circonvt(xk,h,N1); for i=1:N1-L
Y(k,i)=Y(k,i)+ytemp(i); ytemp(i)=Y(k,i+L); end
y(n1:n2+M-1)=Y(k,1:N1); n1=n1+L;n2=n2+L;
end
stem(y);
title('ovrlpadd');
请输入x序列:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 请输入y序列:[1,0,0,-1] 请输入段长L: 4 ans =
1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 -14 -15 -16 (2)
function[y]=ovrlpaddfft(x,h,L) x=input('请输入x序列:'); h=input('请输入y序列:'); L=input('请输入段长L:');
lenx=length(x); %x的长度 M=length(h); %h的长度
N1=L+M-1; %满足循环卷积等于线性卷积的长度 N1=2^(ceil(log10(N1)/log10(2))); m=rem(lenx,L); if m=0
x=[x zeros(1,L-m)]; %末尾补零,使每段长度为N K=floor(lenx/L)+1; %段数 else x=x;
K=floor(lenx/L); %段数 end
ytemp=zeros(1,N1-L); %N1-N为重叠部分,使其初始化为零 n1=1; n2=L; for k=1;K z=x(n1:n2) xk=fft(z,N1);
Y(k,:)=real(ifft(xk. *h)); for i=1:N1-L
Y(k,i)=Y(k,i)+ytemp(i); ytemp(i)=Y(k,i+L);
end
y(n1:n2+N1-L)=Y(k,1:N1); %输出结果 n1=n1+L; n2=n2+L; end
y=y(1:(lenx+M-1)); stem(y);
title('ovrlpadd- 2fft');
请输入x序列:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 请输入y序列:[1,0,0,-1] 请输入段长L: 4 ans =
Columns1through12
1.0000 2.0000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 3.0000 Columns13through19
3.0000 3.0000 3.0000 3.0000 -14.0000 -15.0000 -16.0000
四、实验报告要求
1.整理好经过运行并证明是正确的程序,并且加上详细的注释.
2.把N=1024点FFT分析所用的时间与直接计算DFT所用的时间相对比,从感性上理解”快”字.
3.深入讨论如何运用FFT来研究序列的频谱,为第八章的学习做好准备. 五、实验结果分析
实验五 IIR滤波器设计
一. 实验目的
1. 学习模拟滤波器的设计方法.
2. 学习模拟---数字变换滤波器设计方法. 3. 掌握双线性变换数字滤波器设计法.
4. 掌握用频带变换设计数字滤波器的具体方法. 二. 实验内容
1.设计一个巴特沃斯模拟低通滤波器,满足以下性能指标:通带的截止频率
?p?10000rad/s,通带最大衰减Ap?3dB,阻带的截止频率?s?40000rad/s,阻
带最大衰减As?35dB。
2. 已知模拟滤波器的系统函数为
Ha(s)?1000s?1000
分别用冲激响应不变变焕法和双线性变换法将Ha(s)转换为数字滤波器的系统函数
H(z),并画出相应的Ha(s)和H(z)的频率响应曲线。采样频率分别为1000Hz和500Hz。
3. 要求用双线性变换法设计一个数字巴特沃思低通滤波器,其特性曲线如下图所示。在通带内?p?0.2?,允许幅度误差小于1dB,在阻带?d?0.3?时衰减应大于15dB。通带幅度归一化,使其在??0处为1。
4. 用模拟频带变换法,由二阶巴特沃思函数设计截止频率为200Hz,抽样频率为
500Hz的数字高通滤波器。
三.实验说明
1.求解实验内容1的MATLAB实现程序如下:
---------------------------------------------------------------------------------------------------------------
clear;
close all
fp=10000;fs=40000;Rp=3;As=35; [N,fc]=buttord(fp,fs,Rp,As,'s') [B,A]=butter(N,fc,'s'); [hf,f]=freqs(B,A,1024); subplot(3,2,1);
plot(f,20*log10(abs(hf)/abs(hf(1)))) grid;xlabel('f/Hz');ylabel('幅度(dB)'); axis([0,50000,-40,5])
line([0,50000],[-3,-3]);
---------------------------------------------------------------------------------------------------------------
程序运行结果:
N = 3
fc = 1.0441e+004
其频率特性曲线如下图所示:
频率 单位:10000rad/s
2.求解实验内容2的MATLAB实现程序如下:
---------------------------------------------------------------------------------------------------------------
clear; close all
b=1000;a=[1,1000]; w=[0:1000*2*pi]; [hf,w]=freqs(b,a,w); subplot(2,3,1) plot(w/2/pi,abs(hf)); grid;
xlabel('f/(Hz)');ylabel('幅度'); Fs0=[1000,500]; for m=1:2 Fs=Fs0(m);
[d,c]=impinvar(b,a,Fs);
wd=[0:512]*pi/512; hw1=freqz(d,c,wd); subplot(2,3,2);
plot(wd/pi,abs(hw1)/abs(hw1(1)));hold on;
end
grid;xlabel('f/(Hz)'); text(0.52,0.88,'T=0.002s'); text(0.12,0.54,'T=0.001s');
for m=1:2 Fs=Fs0(m);
[f,e]=bilinear(b,a,Fs); wd=[0:512]*pi/512; hw2=freqz(f,e,wd); subplot(2,3,3);
plot(wd/pi,abs(hw2)/abs(hw2(1)));hold on;
end
grid;xlabel('f/(Hz)'); text(0.5,0.74,'T=0.002s');
text(0.12,0.34,'T=0.001s');
---------------------------------------------------------------------------------------------------------------
运行结果如下图所示:
f /Hz
(a) (b) (c)
模拟滤波器到数字滤波器的转换
由图(b)可见,对冲激响应不变法,采样频率越高(时间T越小),混叠越小;由图(c)可见,对双线性变换法,无频率混叠,但存在非线性失真。
3.求解实验内容3的MATLAB实现程序如下:
---------------------------------------------------------------------------------------------------------------
wp=0.2*pi; 数字信号通带截止频率
ws=0.3*pi; 数字信号阻带截止频率 Rp=1;
As=15;
T=1; 题中所给已知条件 Fs=1/T;
OmegaP=(2/T)*tan(wp/2); 预畸变求模拟信号通带截止频率 OmegaS=(2/T)*tan(ws/2); 预畸变求模拟信号阻带截止频率 ep=sqrt(10^(Rp/10)-1);
Ripple=sqrt(1/(1+ep*ep));初始条件方程组 Attn=1/(10^(As/20));
N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(OmegaP/OmegaS)));求解阶次 OmegaC=OmegaP/((10^(Rp/10)-1)^(1/(2*N)));求解截止频率?c [B,A]=butter(N,OmegaC,'s');巴特沃斯滤波器设计 W=(0:500)*pi/500; W取值范围和抽样间隔pi/500 [H]=freqs(B,A,W); 频率响应 mag=abs(H); 取绝对值
db=20*log10((mag+eps)/max(mag)); [b,a]=bilinear(B,A,T); 双线性变换
[h,w]=freqz(b,a,1000,'whole'); 采用单位圆上1000个点 h=(h(1:501))'; w=(w(1:501))'; m=abs(H);取绝对值
db=20*log10((m+eps)/max(m)); figure(1); 建立波窗口
subplot(2,2,1);plot(w/pi,mag);title('幅度') 4个图中的图一,命名幅度 ylabel(’模拟滤波器’);y坐标轴名 axis([0,1,0,1.1]) 坐标轴设置x.y轴的范围
set(gca,’XTickMode’,’manual’,’XTick’,[0,0.2,0.3,1]); x轴取样点坐标
set(gca,’YTickmode’,’manual’,’YTick’,[0,Attn,Ripple,1]);grid y轴取样点坐标 subplot(2,2,2);plot(w/pi,db1);title(’幅度(dB)’) 四个字图中的图二,命名幅度 axis([0,1,-30,5]) 坐标轴设置x.y轴的范围
set(gca,’XTickMode’,’manual’,’XTick’,[0,0.2,0.3,1]); x轴取样点坐标
set(gca,’YTickmode’,’manual’,’YTick’,[-30,-15,-1,0]);grid y轴取样点坐标
subplot(2,2,3);plot(w/pi,m); 4个子图中的图三
xlabel(’频率单位:pi’);ylabel(’数字滤波器’);坐标轴命名 axis([0,1,0,1.1]) 坐标轴设置x.y轴的范围
set(gca,’XTickMode’,’manual’,’XTick’,[0,0.2,0.3,1]); x轴取样点坐标
set(gca,’YTickmode’,’manual’,’YTick’,[0,Attn,Ripple,1]);grid y轴取样点坐标
subplot(2,2,4);plot(w/pi,db2);四个字图中的图四 xlabel(’频率单位:pi’);横坐标轴名 axis([0,1,-30,5]) 坐标轴设置x.y轴的范围
set(gca,’XTickMode’,’manual’,’XTick’,[0,0.2,0.3,1]); x轴取样点坐标
set(gca,’YTickmode’,’manual’,’YTick’,[-30,-15,-1,0]);grid y轴取样点坐标
--------------------------------------------------------------------------------------------------------------- 运行结果如下图所示。
N = 6 OmegaC = 0.7273
巴特沃思模拟滤波器及利用双线性变换法设计的数字滤波器
4.求解实验内容4的MATLAB实现程序如下:
--------------------------------------------------------------------------------------------------------------- N=2;
Fs=500; fch=200; wch=2*pi*fch/Fs; [z,p,k]=buttap(N); [b,a]=zp2tf(z,p,k); [h,w]=freqs(b,a,512);
Omegach=2*Fs*tan(wch/2); [Bs,As]=lp2hp(b,a,Omegach); [Bz,Az]=bilinear(Bs,As,Fs) [H,W]=freqz(Bz,Az,512); m=abs(H);
db2=20*log10((m+eps)/max(m)); figure(1);
subplot(2,2,1);plot(w/pi,db1) ylable(’幅度(dB)’); axis([0,4,-40,0]);grid subplot(2,2,2);plot(W/pi,db2); ylable(‘幅度(dB)’);
axis([0,1,-100,0]);grid
---------------------------------------------------------------------------------------------------------------
运行结果如下:
Bz = 0.0675 -0.1349 0.0675 Az = 1.0000 1.1430 0.4128 其频带变换曲线如下图所示:
(a)模拟低通滤波器 (b)数字高通滤波器
低通到高通的频带变换曲线
四.实验报告要求
1.给出详细的滤波器设计说明书.
2. 整理好经过运行并证明是正确的程序,并且加上详细的注释. 3.验证所设计滤波器的幅度特性和相位特性.
4.用所设计的滤波器对不同的正弦信号进行滤波,以说明其特性. 5.对数字滤波器模拟截止频率与抽样时间的关系进行讨论. 五.实验结果分析
正在阅读:
实验指导书 3-6章(1)04-26
C语言 文件练习题04-02
收入减少证明03-31
浙江工商局长郑宇民智斗央视主持人董倩 -09-12
厦大翻硕考研难度及复试分数线05-26
【数学】2016年上海市杨浦区中考一模数学试题带答案解析05-07
行政服务中心业务协调科、代办中心职责 211-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 指导书
- 实验
- 医学影像学考试试题
- 2011-学习资料大全:2给排水设计手册
- 2016华师在线小学数学教学论作业-在线练习及答案
- 2014东师大行政管理学离线作业答案
- 福建省泉州市美山中学新课程备课教案专题一第二单元 研究物质的
- 2016尔雅走进《黄帝内经》课后答案
- 人教版小学六年级语文上册课内阅读复习题答案全册
- 2015年《中华人民共和国特种设备安全法》知识竞赛试题答案
- 人教版五年级第二学期数学期中测试卷二
- DSP烧写错误原因
- 心理发展的年龄特征对教育有何启示
- 2009年全国中考物理试题分类汇编 - -在光的世界里(教科版) -
- 财政与税收 选择题
- 客观题(单选题)
- 思政专业阅读参考书目(总 4.23)
- 中考化学实验知识要点专题一化学实验A4纸版
- 2011年教师资格证考试教育方法概论习题及答案
- 商业银行信用卡业务监督管理办法(银监2号令)
- 小学语文句子排序练习题附答案
- 频谱分析仪的使用方法