西北工业大学
《基于 MATLAB 的数字信号处理》实验报告
学
学
姓
专
院:
号:
名:
业:
西北工业大学
2019 年 04 月
1
实验一
MATLAB 基本编程实验
一、实验目的及要求
1.熟悉 MATLAB 运行环境;
2. 掌握 MATLAB 的基本语法和函数;
3. 掌握 MATLAB 的基本绘图功能
二、实验设备(环境)及要求
1. 计算机
2. Matlab 软件编程实验平台
三、实验内容与步骤
1.求下列线性方程组的解
6
x
1
2
x
1
8
x
1
3
4
x
2
5
x
2
x
2
4
3
3
x
3
7
x
3
7
x
3
4
2. 分别用 for 或 while 循环结构编写程序,求出
K
避免循环语句的程序设计算法实现同样的运算。
106
。并考虑一种
3
2i
i
1
3. 在同一坐标系下绘制以下 3 条曲线,并作标记。
y
1
sin ,
x y
2
sin sin(10 ),
x y
3
x
cos ,
x
x
(0,
)
四、设计思路
设计思路 1.1
对于 AX=B 类型的方程组求解,需要先对非奇异矩阵 A 求逆,若存在 A 的逆矩阵,
然后用 A 的逆矩阵与 B 相乘即为所求。
设计思路 1.2
分别使用 for 循环和 while 循环求解问题,采用等比数列求和公式实现同样的运
算。
2
设计思路 1.3
确定曲线范围,在一张图上绘出三条曲线并进行标记。
五、程序代码及注释
程序代码 1.1
%求下列线性方程组的解
clear
A= [ 6 3 4
-2 5 7
8 -4 -3];%输入矩阵 A
b=[ 3
-4
-7];
x=inv(A)*b ; %x=A\b ; x=linsolve(A,b);
disp('x=')%显示解等于
disp(x);
程序代码 1.2
%for
clear
k_1=0;sum=0;
for i=1:106
k_1=sqrt(3)/(2^i);
sum=sum+k_1;
end
disp('k_1='); disp(sum)
%while
clear
k_2=0;sum=0;i=1;
while i<=106
k_2=sqrt(3)/(2^i);
sum=sum+k_2;
i=i+1;
end
disp('k_2=')
disp(sum)
%等比数列避免循环
k=sqrt(3)/2;%等比数列首项
3
k_3=k*(1-0.5^106)/(1-0.5);
disp('k_3=')
disp(k_3)
程序代码 1.3
%在同一坐标系下绘制以下 3 条曲线,并作标记。
clear
x=0:0.01:pi;%x 的取值为 0 到π
y_1=sin(x);
y_2=sin(x).*sin(10*x);
y_3=-cos(x);
plot(x,y_1,'B',x,y_2,'G',x,y_3,'r');
text(0.5,-0.8,'y3');%在指定坐标位置处标注说明文字
text(1,0.9,'y1');
text(1.6,-0.9,'y2');
六、实验结果
1.1 结果为:
x=
即 x=[0.6000, 7.0000,-5.4000]’
0.6000
7.0000
-5.4000
1.2 结果为:
k_1=1.7321
k_2=1.7321
k_3=1.7321
1.3 结果为:
图 1-1:三条曲线的绘制
4
实验二 基于 MATLAB 的数字信号处理实验
一、实验目的及要求
1. 回顾数字信号处理的主要内容;
2. 掌握利用 MATLAB 进行信号处理的方法;
3. 了解信号处理工具箱中一些函数的功能;
二、实验设备(环境)及要求
1. 计算机
2. Matlab 软件编程实验平台
三、实验内容
1. 设序列
( )
x n
( )
y n
其中, ( )
[3,1,7,0, 1,4,2], 3
(
x n
n
3;
2)
0
( ),
w n
1
w n 是均值为 ,方差为 的高斯随机序列.
利用 2 种方法计算 x(n)和 y(n)之间的互相关,并画出互相关序列图.
2 . 一数字滤波器由
(
H e
)
j
1)写出其差分方程表示;
e
1
4
j
1 0.8145
e
频率响应函数描述
j
4
2)画出上面滤波器的幅频和相频图;
/ 2) 5cos(
3)产生信号
sin(
n
n
)
( )
x n
的 200 个样本,通过该滤波
器得到输出 y(n), 试将输出 y(n)的稳态部分与 x(n)作比较,说明这两
个正弦信号的幅度和相位是如何受该滤波器影响的。
3. 用 3 种方法设计带通滤波器(Butterworth、椭圆和窗函数),采样频率 fs
=2000Hz, 通带频率 300Hz—600Hz,阶数自选,画出滤波器的频率响
应,并对三种方法设计的滤波器性能进行分析比较。
四、设计思路
设计思路 2.1
将求互相关问题转化为求卷积的问题,互相关的区间大小为两信号的去见端点分
5
别相加,区间长度为两信号区间长度之和。
设计思路 2.2
由系统的差分方程
.0)(
ny
8145
(
ny
)4
)(
nx
(
nx
)4
,得到方程的各个项的系
数,进而求出系统的幅频和相频响应。
设计思路 2.3
首先选定带通滤波器的阶数,根据采样频率、上下限截止频率求得滤波器的各个
参数,然后进行性能分析比较。
五、程序代码及注释
程序代码 2.1
%方法一
clear
x=[3,1,7,0,-1,4,2];%冲击信号的强度
nx=(-3:3);%x 的取值范围
ny=nx+2;%x(n-2)
y=x;
w=normrnd(0,1,1,7);%w 为均值为 0,方差为 1 的高斯随机序列
nw=ny; %得到 y(n)=x(n-2)+w(n)
x=fliplr(x);
nx=-fliplr(nx);%对 x 进行翻折
nyb=ny(1)+nx(1);
nye=ny(length(y))+ nx(length(x));
nrxy=[nyb:nye];
rxy=conv(y,x);
subplot(1,1,1);
stem(nrxy,rxy);
axis([-5,9,0,90])
xlabel('x');
title('x(n)与 y(n)的互相关')
%方法二
clear
x=[3,1,7,0,-1,4,2];%冲击信号的强度
nx=(-3:3);%x 的取值范围
ny=nx+2;%x(n-2)
y=x;
w=normrnd(0,1,1,7);%w 为均值为 0,方差为 1 的高斯随机序列
6
nw=ny; %得到 y(n)=x(n-2)+w(n)
k=length(y);
xk=fft(x,2*k);
yk=fft(y,2*k);
rm=real(ifft(conj(xk).*yk));
rm=[rm(k+2:2*k),rm(1:k)];
m=(-k+1):(k-1);
rm=ifftshift(rm);
stem(m,rm);
xlabel('m');
ylable('幅度');
title('x(n)与 y(n)的互相关系数');
程序代码 2.2
2.2.1 其差分方程为:y(n)-0.8145y(n-4)=x(n)+x(n-4)
2.2.2
clear all
fs=1000;
b = [1 0 0 0 1];
a = [1 0 0 0 -0.8145];
[h,f]=freqz(b,a,512,fs);%差分方程
mag=abs(h);%幅度
ph=angle(h);%相位
subplot(2,1,1);
ph=ph*180/pi;%从弧度转化为角度
plot(f,mag);
grid;
xlabel('Frequency/Hz');
ylabel('Magnitude');
title('幅频图');
subplot(2,1,2);
plot(f,ph);
grid;
xlabel('Frequency/Hz');ylabel('Phase');
title('相频图');
2.2.3
clear all
N=200;
n=linspace(-100,100,N);
x=sin(pi*n/2)+5*cos(pi*n);
N_fft=2^nextpow2(2*N);
w=linspace(0,2*pi,N_fft);
h_fft=(1+exp(-1j*4*w))./(1-0.8145*exp(-1j*4*w));
7
x_fft=fft(x,N_fft);
y_fft=x_fft.*h_fft;
y_temp=fftshift(ifft(y_fft));
y=y_temp(N_fft/2:N_fft/2+N-1);
figure;
plot(w,abs(h_fft),'b');
hold on;
plot(w,angle(h_fft),'g');
legend('幅度','相位')
figure;
plot(n,x,'b');
hold on;
plot(n,real(y),'g');
legend('x(n)','y(n)稳态部份')
程序代码 2.3
fs=2000;
fc1=300; %下限截止频率
fc2=600; %上限截止频率
N=31; %滤波器的阶数
wlp=fc1/(fs/2);
whp=fc2/(fs/2);
wn=[wlp,whp]; %滤波器归一化后的上下限截止频率
w1=boxcar(N); %矩形窗的时域响应
w2=hanning(N); %汉宁窗的时域响应
w3=hamming(N);%海明窗的时域响应
w4=blackman(N); %布莱克窗的时域响应
%用不同的窗函数设计 N 阶的滤波器
b1=fir1(N-1,wn,w1);
b2=fir1(N-1,wn,w2);
b3=fir1(N-1,wn,w3);
b4=fir1(N-1,wn,w4);
%求出滤波器的频率响应
[H1, f1]=freqz(b1,1,512,fs);
[H2, f2]=freqz(b2,1,512,fs);
[H3, f3]=freqz(b3,1,512,fs);
[H4, f4]=freqz(b4,1,512,fs);
figure
subplot(2,1,1);
plot(f1,20*log10(abs(H1)));
xlabel('Frequency/Hz');
ylabel('amplitude/dB');
title('矩形窗的幅频特性');
8