数字信号处理实验一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
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;
xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.03;');
四、实验结果与分析
Q1.29:运行程序P1.5,以产生所有相关信号。
运行程序所得结果如下:
Q1.30:未污染的信号s[n]是什么样的形式?加性噪声d[n]是什么形式?
答:
未污染的信号S[n]的形式应该为)
[m
m
n
S 表达式所表示的图形,不
2
^
9.0(*
*
]
过自变量的取值为0-50的整数,因此图形应该为一系列离散的点;
加性噪声d[n]的形式应该为在区间(-0.4,0.4)中均匀分布长度为51的随机信号,且为列向量51*1。
Q1.31:使用语句x=s+d能产生被噪声污染的信号吗?若不能,为什么?
答:
使用语句x=s+d不能产生被噪声污染的信号。因为s[n]为行向量,长度为1*51,
而d[n]为列向量,长度为51*1,因此必须将d[n]进行转秩才能相加。
Q1.32:信号x1,x2和x3与信号x之间的关系是什么?
答:
信号x1相当于将信号x延迟一个时间单位,信号x2相当于不变,信号x3相当于将信号x提前一个时间单位。
Q1.33:legend命令的作用是什么?
答:
Legend命令的作用是对各种图标进行标注,在本实验中将“-”标注为“d[n]”,将“--”标注为“s[n]”,将“-.”标注为“x[n]”。
Q1.34:在载波信号xH[n]和调制信号xL[n]采用不同频率、不同调制指数m的情况下,运行程序P1.6,以产生振幅调制信号y[n]。
答:
Q1.35:算术运算符*和.*之间的区别是什么?
答:
“*”是进行两个标量的相乘,所得结果仍为一个标量;“.*”是长度相同的行向量(或者列向量相乘),所得结果仍为长度不变的行向量(或者列向量)。五、实验小结
实验收获:
通过本次实验加深了我对数字信号处理的理解,并对三点滑动平均算法有了进一步的了解,并且对数字信号处理的一些细节问题有了大概的认识。对于数字信号的编程处理我们完全可以将其看做一个数组进行操作,只要熟悉MATLAB中的对数组的操作,我们就能很好的完成以后的实验了。
不足之处:
本次实验是数字信号处理实验的第一个实验,总体上说难度不是很大,程序也是对照书本打上的,但是其中的一些细节问题还是需要仔细考虑的。对于理论的理解不够还是导致了本次实验在习题的回答上出现了问题,对于一些问题的回答还必须上网查阅资料才行,因此在以后的理论学习中要多加注意。
体会:
通过本次实验我的体会很深,MATLAB的功能太强大了,对于数字信号处理用MATLAB太合适了。并且对于数字信号我们完全可以将其看为一个数组进行处理,大大化简了我们对信号处理的难度。