数字信号处理课设报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
名称数字信号处理课程设计
基于MATLAB测速仪设计
指导教师罗倩
设计起始日期 2015-1-5至2015-1-15
学院信息与通信工程学院
专业电子信息工程
学生姓名
班级/学号
成绩
指导老师签字
第一部分:基础题
1.题目一:
以周期Ts=0.125ms 对信号进行采样,得到离散时间信号:
x(n)=cos(0.48πn)+ cos(0.52πn)
1)用杆形图画出离散时间序列;
2)取 x(n) (0≤n≤9),求 x(n)的 10 点 FFT,并绘出图形;
3)将 1)中的 x(n)后面补零,使 x(n)加长到 0≤n≤99,求 FFT,并绘出图形;
4)取 x(n) (0≤n≤99),求 x(n)的 100 点 FFT,并绘出图形。
5)分析 1)-3)的结果;
6)为了能分辨出信号的频谱成分,所需的频率分辨率是多少?至少应记录多长时
间的信号,为什么?
7)用 FFT 作出离散谱,离散谱线与实际频率如何对应?为什么?用实际频率标记
频率轴。
8)利用一个单位脉冲响应序列为 h(n)的系统,设计实现对上述长的序列 x(n)滤波处理,要求使用重叠保留法通过 FFT 来实现这种处理,要求各输入数据段重叠 p 个样点,并从每一段产生的输出中取出 m 个样点,再连接在一起以得到所要求的输出序列。设计滤波算法程序。试用h ( n) ={1,1,1,1,1}(五点平均系统)验证你的程序,并求出 p 和 m,显示出分段的输入序列各段的内容和分段的输出序列各段的内容,用杆状图绘出线性卷积输出结果和通过 FFT 重叠保留法的输出结果。
♦流程图
开始
定义时域n0的取值为0到9
生成时域波形,用plot函数画出时域波形
用fft函数对10点时域波形进行快速傅里叶变换
画出10点FFT变换的频域图形
在原序列后补零使序列长度增加到100
对补零后序列FFT取模,画出时域和频域图形
重新取样取n为0到99
对100点时域信号FFT取模,画出时域和频域图形
结束
♦回答问题并写明计算依据对结果进行分析比较
5) 分析1)-3)的结果
6) 为了能分辨出信号的频谱成分,所需的频率分辨率是多少?至少应记录多长时间的信号,为什么?
7) 用FFT作出离散谱,离散谱线与实际频率如何对应?为什么?用实际频率标记频率轴。8)重叠保留法
相应程序
clear all;clc;close all;
Ts=0.000125;
Fs=1/Ts;
n=0:99;
xn=cos(0.48*pi*n)+cos(0.52*pi*n);
%% 线性卷积
hn=ones(1,5);
yn=conv(xn,hn);
figure;
subplot(211);
stem(yn);
title('线性卷积')
grid on;
%% 重叠保留法
N=length(xn); % xn的长度
M=length(hn); % hn的长度
L=8; %确定做变换的点数
K=floor(N/(L-(M-1))) ; % 求分组数,向下取整
leftlenx=N-K*(L-(M-1)); % 剩下的元素的个数
bzero=N-leftlenx-(M-1); % 后面需要补零的个数
xn=[zeros(1,M-1),xn,zeros(1,bzero)];% 对整个序列补零
for i=1:K+1
xseg= xn(((L-(M-1))*(i-1)+1): ((L-(M-1))*(i-1)+L));
xi(i,:)=xseg;
end
%% FFT & IFFT
hn=[hn zeros(1,L-M)];
H=fft(hn);
for i=1:K+1
Xi(i,:)=fft(xi(i,:));
Yi(i,:)=Xi(i,:).*H;
yi(i,:)=ifft(Yi(i,:)) % 反变换
end
y1=yi(:,M:L)'
y2=y1(:)
subplot(2,1,2)
stem(y2)
title('重叠保留法N点圆周卷积')
grid on
♦总结实验所得的主要结论
本实验表明,时域原序列补零不能提高谱分析的分辨率F。分辨率公式F=Fs/N中的N 是在记录时间内的时域抽样点数。补零没有增加时域“有效”数据,所以不会提高谱分析精度。
♦绘出实验得到的图形
程序
clear all;clc;close all;
Ts=0.000125;
Fs=1/Ts;
n=0:9;
xn=cos(0.48*pi*n)+cos(0.52*pi*n); subplot(321);
stem(n,xn);
xlabel('n');ylabel('x(n)');
title('10点离散时间序列');
%% 十点FFT
k=n;
X=abs(fft(xn));
subplot(322);
stem(k,X);
xlabel('k');ylabel('|X(k)|')
title('10点FFT的模')
grid on;
%% 补零100点FFT
xn=[xn,zeros(1,100-length(xn))]; subplot(323);
stem(0:length(xn)-1,xn);
xlabel('n');ylabel('x(n)');
title('补零后的100点离散时间序列'); k=0:length(xn)-1;
X=abs(fft(xn));
subplot(324);
stem(k,X);
xlabel('k');ylabel('|X(k)|')