目录
1. 认识离散时间序列
一般来说,我们在现实中遇到的都是一些模拟信号,但如果使用计算机处理信号的话,在时间上不连续的数字信号有更好的精度以更低的噪声敏感度,所以要进行数字信号处理,即对离散时间信号的处理。
离散时间信号表示的就是在时域不连续的信号,而它的不连续性可能是周期的,也有可能不是周期的,看具体情况进行判断
2. 生成一些常用信号
(1) 正弦信号
正弦信号的生成比较简单,确定了自变量的范围就可以直接使用相应的表达式进行生成:
xn=cos(0.6*pi*n + 0.3*pi);
figure
plot(n,xn)
axis([-40,60,-1.5,1.5])
title('正弦信号')
通过以上代码可以得到下面的图像:
如果需要调整信号的频率直接在信号表达式内部进行修改即可:
xn=cos(0.1*pi*n + 0.3*pi);
figure
plot(n,xn)
axis([-40,60,-1.5,1.5])
title('正弦信号')
得到如下结果:
(2) 指数信号
确定了指数函数的指数以及系数,就可以进行绘制:
A=2; a=0.2;
t=-10:0.01:10;
ft=A*exp(a*t);
plot(t,ft);
grid on; %在图上画方格
得到的图像如下(使用 grid on 可以绘制表格):
(3) 单位冲击信号
单位冲击信号,即 ,当 t 为零时该信号值为1,t 为其他值时该信号值为 0:
n = -5:5;
x = n == 0;% 当n为0时,x的值为1
stem(n, x, 'filled');
axis([-5 5 0 1.1*max(x)]);%规定坐标轴的范围
xlabel('时间(n)');ylabel('幅度(n)');
得到的信号如下:
(4) 阶跃信号
当 t < 0 时信号全为0,当 t > 0 时信号全为1
n = -2:8;
x = n >= 0; % 当n大于等与零时,其值为1
stem(n, x, 'filled');
axis([-4, 4, 0, 1.1*max(x)]);
title('阶跃信号');
xlabel('时间(n)');ylabel('幅度(n)');
得到如下所示的图像:
(5) 随机信号
代码如下:
tn=0:0.2:15;
N=length(tn);
x=rand(1,N);
subplot(2,1,1);
plot(tn,x);
tn=0:0.5:15;
N=length(tn);
y=rand(1,N);
subplot(2,1,2);
stem(tn,y,'.');
在确定的范围内得到的连续时间和离散时间信号如下图:
3. 生成离散时间信号
即在时域内离散不连续的信号
(1) 正弦信号
n = -40:60;
xn=cos(0.1*pi*n + 0.3*pi);
stem(n,xn,'.');
axis([-40,60,-1.5,1.5])
title('正弦信号')
得到图像如下:
(2) 指数信号
实现上图的代码如下:
n1=-10; n2=10;
a1=0.5; a2=2;
na1=n1:0;
x1 = a1.^na1;
na2 = 0:n2;
x2 = a2.^na2;
subplot(2,1,1);
stem(na1,x1,'filled');
title('实指数序列(a<1)');
subplot(2,1,2);
stem(na2,x2,'filled');
title('实指数序列(a>1)');
(3) 通过输入参数来实现信号
L = input('Please input L:\n');
A = input('Please input A:\n');
w = input('Please input w:\n');
ph = input('Please input ph:\n');
n = 0:L;
xn = A*sin(w*n + ph);
stem(n,xn,'.')
axis([0,L,-1-A,A+1])
title('M2.4 2.40f')
通过上述代码可以实现输入系数、序列长度、频率以及相位进行信号序列的输出
(4)数字信号处理中的一道题
n=-40:40;
xnb=cos(0.6*pi*n + 0.3*pi);
figure
subplot(4,1,1)
stem(n,xnb,'.');
axis([-40,40,-1.5,1.5])
title('2.39b')
xnc = real(exp(1j*pi*n/8)) + imag(exp(1j*pi*n/5));
subplot(4,1,2)
stem(n,xnc,'.')
axis([-40,40,-1,2])
title('2.39c')
xnd = 6*sin(0.15*pi*n) - cos(0.12*pi*n + 0.1*pi);
subplot(4,1,3)
stem(n,xnd,'.');
axis([-40,40,-10,10])
title('2.39d')
xne = sin(0.1*pi*n + 0.75*pi) - 3*cos(0.8*pi*n + 0.2*pi) + cos(1.3*pi*n);
subplot(4,1,4)
stem(n,xne,'.');
axis([-40,40,-5,5])
title('2.39e')
效果如下: