Matlab 进行离散时间信号序列的生成

目录

1. 认识离散时间序列

2. 生成一些常用信号

(1) 正弦信号

(2) 指数信号

(3) 单位冲击信号

(4) 阶跃信号

(5) 随机信号

3. 生成离散时间信号

(1) 正弦信号

(2) 指数信号

(3) 通过输入参数来实现信号

(4)数字信号处理中的一道题


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) 单位冲击信号

单位冲击信号,即 \large \delta (t) ,当  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')

效果如下:

Guess you like

Origin blog.csdn.net/qq_52309640/article/details/120261105