一、序列的时域表示
1、什么是序列:
- Sequences:离散时间信号,即时间变量离散化的信号。 连续时间变量经过抽样,就可以得到离散时间信号。 通常抽样时间间隔是均匀的,所以得到的信号可以称为等间隔离散时间信号。
序列可以表示为{x[n]}(或x[n]),其中的n仅仅为整数的时候为有效值。
例:{x[n]}={…,2,2.4,1,5,4,6,4.4,…},在一个序列中,通常要知道序列零点的位置,可以看作time index(时间索引),在零点左边的n值依次为-1,-2,…在零点右边的n值依次为1,2,… - 使用matlab可以生成任意的序列,这里给出几种常用的序列信号的代码以及仿真图
stem函数作用为将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止。如果Y是一个矩阵,则将其每一列按照分隔方式画出。
N = 101; %设置序列长度为101
n = -50:50; %定义n值
%生成各序列数值
un = [zeros(1,50) ones(1,51)];
dn = [zeros(1,50) 1 zeros(1,50)];
rn = [zeros(1,50) ones(1,10) zeros(1,41)];
%画图
subplot(311);
stem(n,un);
title('单位阶跃序列');
subplot(312);
stem(n,dn);
title('单位脉冲序列');
subplot(313);
stem(n,rn);
title('矩形序列');
- 在对一个信号进行采样时,需要确定采样周期T,每隔一个T值进行一次采样,与此同时,为确保采样的准确性,对应的采样频率必须大于采样信号中最高频率的两倍。
2、实数序列和负数序列
- 对于一个实序列{x[n]},如果第n个样本的x[n]对所有n值都是实数,那么是实序列,否则是复数序列。
- eg:
{x[n]} = {cos0.25n}是一个实序列;
{y[n]} = {e^(j0.3n)}是一个复数序列,可以使用欧拉公式展开。
🐖:欧拉公式:e^(ix) = cosx + isinx
因此{y[n]}可以写作:{y[n]} = {cos0.3n} + j{sin0.3n},前面是实部,后面是虚部
3、复共轭序列
- {x[n]}的复共轭序列为:{x*[n]} = {xre[n]}-j{xim[n]}
- eg:{w[n]} = {cos0.3n} - j{sin0.3n} = {e^(-j0.3n)}就是{y[n]}的复共轭序列
4、因果、反因果序列和非因果序列
-
因果序列:一个右边序列,当n<N1时,y[n]=0,当n>N1时,y[n]为无限长的序列,是一个因果序列
-
一个左边序列,当n>N2时,y[n]=0;,当n<N2时,y[n]为无限长的序列,是一个反因果序列
-
将h[0]=0(n<0)的序列称为因果序列,不满足的为非因果序列
二、序列的运算操作
1、序列运算种类:
一个单输入单输出离散时间系统在输入序列上按照规定的规则运行,并发展出输出序列,使其具有更理想的性质。
- 调制操作:y[n]=x[n]·w[n]
n = 0:9; %定义序列长度
a = [1 2 3 4 5 5 4 3 2 1];
b = [1 1 4 4 6 6 8 8 9 10];
%画图
subplot(311);
stem(n,a);title('a序列');
subplot(312);
stem(n,b);title('b序列');
subplot(313);
stem(n,a.*b);title('操作');
- 累加操作:y[n]=x[n]+w[n]
n = 0:9; %定义序列长度
a = [1 2 3 4 5 5 4 3 2 1];
b = [1 1 4 4 6 6 8 8 9 10];
%画图
subplot(311);
stem(n,a);title('a序列');
subplot(312);
stem(n,b);title('b序列');
subplot(313);
stem(n,a+b);title('操作');
- 乘法操作:y[n]=A·x[n]
n = 0:9; %定义序列长度
a = [1 2 3 4 5 5 4 3 2 1];
b = [1 1 4 4 6 6 8 8 9 10];
%画图
subplot(311);
stem(n,a);title('a序列');
%subplot(312);
%stem(n,b);title('b序列');
subplot(313);
stem(n,4*a);title('操作');
- 延时操作:y[n]=x[n-1]
n = 0:9; %定义序列长度
a = [1 2 3 4 5 5 4 3 2 1];
b = [1 1 4 4 6 6 8 8 9 10];
%画图
subplot(311);
stem(n,a);title('a序列');
%subplot(312);
%stem(n,b);title('b序列');
subplot(313);
stem(n+1,a);title('操作');
- 超前操作:y[n]=x[n+1]
n = 0:9; %定义序列长度
a = [1 2 3 4 5 5 4 3 2 1];
b = [1 1 4 4 6 6 8 8 9 10];
%画图
subplot(311);
stem(n,a);title('a序列');
%subplot(312);
%stem(n,b);title('b序列');
subplot(313);
stem(n-1,a);title('操作');
- 逆时操作:y[n]=x[-n]
n = 0:9; %定义序列长度
a = [1 2 3 4 5 5 4 3 2 1];
b = [1 1 4 4 6 6 8 8 9 10];
%画图
subplot(311);
stem(n,a);title('a序列');
%subplot(312);
%stem(n,b);title('b序列');
subplot(313);
stem(-n,a);title('操作');
2、序列相加运算取平均值进行去噪
- eg:生成一个无损的信号,同时生成一个幅值在-0.5~+0.5之间的噪声信号,通过累加后取平均值的方法将噪声滤除。
采用累加后取平均值去噪的原因:噪声是幅值在-0.5~+0.5随机的信号,其平均值为0,因此取平均后就可以将噪声滤除。
N = 100; %定义序列长度
n = 0:N-1;
s = 2*n.*(0.9.^n); %生成无损信号
d = rand(N,1)-0.5; %生成噪声
x = s + d';
figure(1);
stem(n,x);title('singal+noise');
pause
for m = 1:100;
d = rand(N,1)-0.5;
x1 = s + d';
x = x + x1;
end
x = x/100;
figure(2);
stem(n,d);title('noise');
figure(3);
stem(n,s);title('signal');
figure(4);
stem(n,x);title('result');
-
噪声信号
-
无损信号
-
混合噪声的信号
-
去噪后的信号