实验二信号的采样与重建
一.实验目的
(1)通过观察采样信号的混叠现象,进一步理解奈奎斯特采样频率的意义。
(2)通过实验,了解数字信号采样转换过程中的频率特征。
(3)对实际的音频文件作内插和抽取操作,体会低通滤波器在内插和抽取中的作用。
二.实验内容
(1)采样混叠,对一个模拟信号Va(t)进行等间采样,采样频率为200HZ,得到离散时间信号V(n).Va(t)由频率为30Hz,150Hz,170Hz,250Hz,330Hz的5个正弦信号的加权和构成。Va(t)=6cos(60pi*t)+3sin(300pi*t)+2cos(340pi*t)+4cos(500pi*t )+10sin(660pi*t)观察采样后信号的混叠效应。
程序:clear,
close all,
t=0:0.1:20;
Ts=1/2;
n=0:Ts:20;
V=8*cos(0.3*pi*t)+5*cos(0.5*pi*t+0.6435)-10*sin(0.7*pi*t);
Vn=8*cos(0.3*pi*n)+5*cos(0.5*pi*n+0.6435)-10*sin(0.7*pi*n);
subplot(221)
plot(t,V),
grid on,
subplot(222)
stem(n,Vn,'.'),
grid
on,
05101520-40
-200204005101520
(2)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,N=100,按因子M=2作抽取:(1)不适用低通滤波器;(2)使用低通滤波器。分别显示输入输出序列在时域和频域中的特性。 程序:clear;
N=100; M=2;
f1=0.043; f2=0.31; n=0:N-1;
x=sin(2*pi*f1*n)+sin(2*pi*f2*n); y1=x(1:2:100);
y2=decimate(x,M,'fir'); figure(1);
stem(n,x(1:N));
title('input sequence'); xlabel('n');ylabel('fudu'); figure(2); n=0:N/2-1; stem(n,y1);
title('output sequence without LP'); xlabel('n');ylabel('fudu'); figure(3); m=0:N/M-1;
stem(m,y2(1:N/M));
title('output sequence with LP'); xlabel('n');ylabel('fudu'); figure(4);
[h,w]=freqz(x);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the input sequence'); xlabel('w');ylabel('fudu'); figure(5);
[h,w]=freqz(y1);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence without LP'); xlabel('w');ylabel('fudu'); figure(6);
[h,w]=freqz(y2);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence without LP'); xlabel('w');ylabel('fudu');
010203040
5060708090100
input sequence
n
f u d u
05101520
253035404550
output sequence without LP
n
f u d u
05101520
25303540
4550
output sequence with LP
n
f u d u
0.5
1
1.5
2
2.5
3
3.5
051015202530354045
50frequency spectrum of the input sequence
w
f u d u
00.51 1.5
2 2.5
3 3.5
5
10
15
20
25
30
frequency spectrum of the output sequence without LP
w
f u d u
00.51 1.5
2 2.5
3 3.5
5
10
1520
25
frequency spectrum of the output sequence without LP
w
f u d u
(3)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,长度N=50,内插因子为2.(1)不适用低通滤波器;(2)使用低通滤波器。分别显示输入输出序列在时域和频域中的特性。 程序:clear,
close all , N=50; L=2;
f1=0.043; f2=0.31; n=0:N-1;
x=sin(2*pi*f1*n)+sin(2*pi*f2*n); figure(1);
stem(n,x(1:N));
title('input sequence'); xlabel('n');ylabel('fudu'); y1=zeros(1,N*2); y1(1:2:N*2)=x; figure(2); m=0:N*L-1;
stem(m,y1(1:N*L));
title('output sequence ');
xlabel('n');ylabel('fudu');
y2=interp(x,L);
figure(3);
m=0:N*L-1;
stem(m,y2(1:N*L));
title('output sequence');
xlabel('n');ylabel('fudu');
figure(4);
[h,w]=freqz(x);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the input sequence'); xlabel('w');ylabel('fudu');
figure(5);
[h,w]=freqz(y1);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence'); xlabel('w');ylabel('fudu');
figure(6);
[h,w]=freqz(y2);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence '); xlabel('w');ylabel('fudu');
05101520
253035404550
n
f u d u
010203040
5060708090100
output sequence
n
f u d u
10
20
30
40
5060
70
80
90
100
n
f u d u
00.51 1.5
2 2.5
3 3.5
5
10
15
20
25
30
frequency spectrum of the input sequence
w
f u d u
00.51 1.5
2 2.5
3 3.5
5
10
15
20
25
30
frequency spectrum of the output sequence
w
f u d u
00.51 1.5
2 2.5
3 3.5
10
20
30
40
50
60
frequency spectrum of the output sequence
w
f u d u
二.(3)令x(n)=cos(2*pi*f*n/fs),其中f/fs=1/16,即每个周期内有16个点。试用MATLAB 编程实现:
1).作M=4倍的抽取,使每个周期变成4点。程序:clear,
close all,
N=100;
M=4;
n=0:N-1;
x=cos(2*pi*n*(1/16));
stem(n,x(1:N));
title('input sequence');
xlabel('n');ylabel('fudu');
y1=x(1:4:100);
y2=decimate(x,M,'fir');
figure(2);
m=0:N/4-1;
stem(m,y1);
title('output sequence ');
xlabel('n');ylabel('fudu');
figure(3);
m=0:N/M-1;
stem(m,y2(1:N/M));
title('output sequence');
xlabel('n');ylabel('fudu');
figure(4);
[h,w]=freqz(x);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the input sequence'); xlabel('w');ylabel('fudu');
figure(5);
[h,w]=freqz(y1);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence'); xlabel('w');ylabel('fudu');
figure(6);
[h,w]=freqz(y2);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence '); xlabel('w');ylabel('fudu');
n
f u d u
n
f u d u
0510
152025
output sequence
n
f u d u
00.51 1.5
2 2.5
3 3.5
10
20
30
40
50
60
frequency spectrum of the input sequence
w
f u d u
0.51 1.5
2 2.5
3 3.5
02468
1012
14frequency spectrum of the output sequence
w
f u d u
0.51 1.5
2 2.5
3 3.5
02468
1012
14frequency spectrum of the output sequence
w
f u d u
2).作L=3倍的插值,使每个周期变成48点。 程序:clear, close all, N=50;
L=3;
n=0:N-1;
x=cos(2*pi*n*(1/16));
figure(1);
stem(n,x(1:N));
title('input sequence');
xlabel('n');ylabel('fudu');
y1=zeros(1,N*3);
y1(1:3:N*3)=x;
figure(2);
m=0:N*3-1;
stem(m,y1(1:N*3));
title('output sequence ');
xlabel('n');ylabel('fudu');
y2=interp(x,L);
figure(3);
m=0:5:N*L-1;
stem(m,y2(1:5:N*L));
title('output sequence');
xlabel('n');ylabel('fudu');
figure(4);
[h,w]=freqz(x);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the input sequence'); xlabel('w');ylabel('fudu');
figure(5);
[h,w]=freqz(y1);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence'); xlabel('w');ylabel('fudu');
figure(6);
[h,w]=freqz(y2);
plot(w(1:64),abs(h(1:64)));
title('frequency spectrum of the output sequence '); xlabel('w');ylabel('fudu');
n
f u d u
n
f u d u
050
100150
n
f u d u
00.51 1.5
2 2.5
3 3.5
frequency spectrum of the input sequence
w
f u d u
00.51 1.5
2 2.5
3 3.5
frequency spectrum of the output sequence
w
f u d u
00.050.10.15
0.20.250.30.350.4
frequency spectrum of the output sequence
w
f u d u
(4).输入信号x(n)为归一化频率分别是f1=0.04,f2=0.3的正弦信号相加而成,N=50,内插因子为5,抽取因子为3,给出按有理因子5/3做采样率转换的输入输出波形。 程序:clear, close all,
N=50;
M=3;
L=5;
f1=0.04;
f2=0.3;
n=0:N-1;
x=sin(2*pi*f1*n)+sin(2*pi*f2*n);
y=resample(x,L,M);
figure(1);
stem(n,x(1:N));
title('input sequence');
xlabel('n');ylabel('fudu');
figure(2);
m=0:N-1;
stem(m,y(1:N));
title('output sequence ');
xlabel('n');ylabel('fudu');
figure(3);
[h,w]=freqz(x);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the input sequence'); xlabel('w');ylabel('fudu');
figure(4);
[h,w]=freqz(y);
plot(w(1:512),abs(h(1:512)));
title('frequency spectrum of the output sequence '); xlabel('w');ylabel('fudu');