2. 离散时间信号

2.1. 生成序列

2.1.1. 单位样本序列和单位阶跃序列生成

[1]:
% Generation of a Unit Sample Sequence
clf;
% Generate a vector from -10 to 20
n = -10:20;
% Generate the unit sample sequence
u = [zeros(1,10) 1 zeros(1,20)];
% Plot the unit sample sequence
stem(n,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-10 20 0 1.2]);
../_images/matlab_ex_ch2_1_0.png

注解

问题:

  1. 根据上述产生单位样本序列的方法,编写单位阶跃序列的代码;

2. 试分析下面几个函数的功能: axis, title, xlabel, ylabel

2.1.2. 指数信号

[2]:
% Generation of a complex exponential sequence
clf;
c = -(1/12)+(pi/6)*i;
K = 2;
n = 0:40;
x = K*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('Time index n');ylabel('Amplitude');
title('Real part');
subplot(2,1,2);
stem(n,imag(x));
xlabel('Time index n');ylabel('Amplitude');
title('Imaginary part');
../_images/matlab_ex_ch2_4_0.png

注解

问题:

  1. 哪个参数控制了序列的增长或者衰减率?

  2. 哪个参数控制了序列的幅度?

  3. 如果将上述代码中的参数 c 修改为 (1/12)+(pi/6)*i ,结果是什么?

  4. 函数 real , imag , subplot 的作用是什么?

[3]:
% Generation of a real exponential sequence
clf;
n = 0:35; a = 1.2; K = 0.2;
x = K*a.^n;
stem(n,x);
xlabel('Time index n');ylabel('Amplitude');
../_images/matlab_ex_ch2_6_0.png

注解

问题:

  1. 哪个参数控制了序列的增长或者衰减率?

  2. 哪个参数控制了序列的幅度?

  3. 如果将上述代码中的 ^.^ 的区别是什么?

  4. 将上述代码中的参数K修改为20,参数a改为0.9,运行的结果是什么?

  5. 上述代码产生的序列长度为多少?这个长度是通过哪个参数来控制的?

2.2. 简单的序列运算

2.2.1. 信号平滑

[4]:
% Signal Smoothing by Averaging
clf;
R = 51;
d = 0.8*(rand(R,1) - 0.5); % Generate random noise
m = 0:R-1;
s = 2*m.*(0.9.^m); % Generate uncorrupted signal
x = s + d'; % Generate noise corrupted signal
subplot(2,1,1);
plot(m,d','r-',m,s,'g--',m,x,'b-.');
xlabel('Time index n');ylabel('Amplitude');
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('Time index n');ylabel('Amplitude');
../_images/matlab_ex_ch2_9_0.png

注解

问题:

  1. 信号x1,x2,x3和原始信号x之间的关系是什么?

  2. 函数 lenged 的作用是什么?

2.3. 从声音文件中读取信号并显示波形

[5]:
% load the speech signal and then plot
clf;
[y,fs] = audioread('malevoice.wav');
t = [0:length(y)-1]/fs;
plot(t,y)
xlabel('Time (s)')
ylabel('Amplitude')
axis tight
../_images/matlab_ex_ch2_12_0.png
[6]:
% Using sound function to play audio
sound(y,fs);