【MATLAB数字信号处理】离散时间系统的时域分析(三)

2.6 线性时不变系统的级联

​ 在实际应用中,高阶因果线性时不变离散时间系统可以用低阶因果线性时不变离散时间系统级联得到。例如,四阶离散时间系统:

y [ n ] + 1.6 y [ n − 1 ] + 2.28 y [ n − 2 ] + 1.325 y [ n − 3 ] + 0.68 y [ n − 4 ] = 0.06 x [ n ] − 0.19 x [ n − 1 ] + 0.27 x [ n − 2 ] − 0.26 x [ n − 3 ] + 0.12 x [ n − 4 ] y[n]+1.6y[n-1]+2.28y[n-2]+1.325y[n-3]+0.68y[n-4]=0.06x[n]-0.19x[n-1]+0.27x[n-2]-0.26x[n-3]+0.12x[n-4] y[n]+1.6y[n1]+2.28y[n2]+1.325y[n3]+0.68y[n4]=0.06x[n]0.19x[n1]+0.27x[n2]0.26x[n3]+0.12x[n4]

可用两个二阶离散时间系统的级联实现。

第一级:

y 1 [ n ] = 0.9 y 1 [ n − 1 ] + 0.8 y 1 [ n − 2 ] = 0.2 x [ n ] − 0.2 x [ n − 1 ] + 0.4 x [ n − 2 ] y_1[n]=0.9y_1[n-1]+0.8y_1[n-2]=0.2x[n]-0.2x[n-1]+0.4x[n-2] y1[n]=0.9y1[n1]+0.8y1[n2]=0.2x[n]0.2x[n1]+0.4x[n2]

第二级:

y 2 [ n ] + 0.7 y 2 [ n − 1 ] + 0.85 y 2 [ n − 2 ] = 0.2 y 1 [ n ] − 0.5 y 1 [ n − 1 ] + 0.3 y 1 [ n − 2 ] y_2[n]+0.7y_2[n-1]+0.85y_2[n-2]=0.2y_1[n]-0.5y_1[n-1]+0.3y_1[n-2] y2[n]+0.7y2[n1]+0.85y2[n2]=0.2y1[n]0.5y1[n1]+0.3y1[n2]

​ 通过MATLAB仿真上述四阶系统和二阶系统。首先产生序列 x [ n ] x[n] x[n],将其作为四阶系统的输入,生成输出 y [ n ] y[n] y[n]。然后将同样的输入 x [ n ] x[n] x[n]应用到第一级得到输出序列 y 1 [ n ] y_1[n] y1[n]。接下来用 y 1 [ n ] y_1[n] y1[n]作为第二级的输入得到它的输出 y 2 [ n ] y_2[n] y2[n]。最后求出 y 1 [ n ] y_1[n] y1[n] y 2 [ n ] y_2[n] y2[n]之间的差,并画出所有的输出信号和差值信号。

% 线性时不变系统的级联实现
clf;
x = [1,zeros(1,40)];  % 生成输入
n = 0:40;
% 四阶系统的系数
den = [1 1.6 2.28 1.325 0.68];
num = [0.06 -0.19 0.27 -0.26 0.12];
% 计算四阶系统的输出
y = filter(num,den,x);
% 两个二阶系统的系数
num1 = [0.3 -0.2 0.4];
den1 = [1 0.9 0.8];
num2 = [0.2 -0.5 0.3];
den2 = [1 0.7 0.85];
% 级联第一级的输出y1[n]
y1 = filter(num1,den1,x);
% 级联第二级的输出y2[n]
y2 = filter(num2,den2,y1);
% y[n]和y2[n]之间的差
d = y - y2;
% 画出输出和差值信号
subplot(3,1,1);stem(n,y);
ylabel('振幅');title('四阶实现的输出');grid;
subplot(3,1,2);stem(n,y2);
ylabel('振幅');title('级联实现的输出');grid;
subplot(3,1,3);stem(n,d);
xlabel('时间序号n');ylabel('振幅');title('差值信号');grid;

在这里插入图片描述

2.7 卷积

​ 卷积运算在MATLAB中可以通过命令conv实现。

​ 例如,可以把系统的冲激响应与给定的有限长输入序列进行卷积,得到有限冲激响应系统的输出序列。

% 卷积运算
clf;
h = [3 2 1 -2 1 0 -4 0 3];  % 冲激
x = [1 -2 3 -4 3 2 1];  % 输入序列
y = conv(h,x);
n = 0:14;
subplot(2,1,1);stem(n,y);
xlabel('时间序号n');ylabel('振幅');title('卷积运算结果');grid;
x1 = [x zeros(1,8)];
y1 = filter(h,1,x1);
subplot(2,1,2);stem(n,y1);
xlabel('时间序号n');ylabel('振幅');title('由滤波生成的输出');grid

在这里插入图片描述

2.8 信号的相关

2.8.1 定义

​ 互相关序列 r x y [ l ] r_{xy}[l] rxy[l]表示一对能量信号 x [ n ] x[n] x[n] y [ n ] y[n] y[n]之间相似性的度量,其定义为(假设式中的无限求和是收敛的):

r x y [ l ] = ∑ n = − ∞ ∞ x [ n ] y [ n − l ] , l = 0 , ± 1 , ± 2 , … … r_{xy}[l]=\sum_{n=-∞}^∞x[n]y[n-l],l=0,±1,±2,…… rxy[l]=n=x[n]y[nl],l=0,±1,±2,

参数 l l l称为时滞,表示这一对信号间的时移。若为正,则说明时间序列 y [ n ] y[n] y[n]相对于参考序列 x [ n ] x[n] x[n]右移了 l l l个样本;若为负,则说明时间序列 y [ n ] y[n] y[n]相对于参考序列 x [ n ] x[n] x[n]左移了 l l l个样本。

​ 上式中下标 x y xy xy的顺序表明 x [ n ] x[n] x[n]是参考序列,它在时间上保持固定,而序列 y [ n ] y[n] y[n]相对于 x [ n ] x[n] x[n]做平移。若希望 y [ n ] y[n] y[n]做参考序列而序列 x [ n ] x[n] x[n]相对于 y [ n ] y[n] y[n]平移,则相应的互相关序列为:

r y x [ l ] = ∑ n = − ∞ ∞ y [ n ] x [ n − l ] = ∑ m = − ∞ ∞ y [ m + l ] x [ m ] = r x y [ − l ] r_{yx}[l]=\sum_{n=-∞}^∞y[n]x[n-l]=\sum_{m=-∞}^∞y[m+l]x[m]=r_{xy}[-l] ryx[l]=n=y[n]x[nl]=m=y[m+l]x[m]=rxy[l]

由此可见, r y x [ l ] r_{yx}[l] ryx[l]是序列 r x y [ l ] r_{xy}[l] rxy[l]经过时间反转得到的。

​ 令 y [ n ] y[n] y[n]= x [ n ] x[n] x[n]即可得到序列 x [ n ] x[n] x[n]的自相关序列为:

r x x [ l ] = ∑ n = − ∞ ∞ x [ n ] x [ n − l ] r_{xx}[l]=\sum_{n=-∞}^∞x[n]x[n-l] rxx[l]=n=x[n]x[nl]

2.8.2 信号的相关的应用
2.8.2.1 寻找被噪声淹没的有用信号的位置

​ 利用互相关运算寻找被噪声淹没的有用信号的位置。得到互相关运算的计算结果后,出现峰值的位置即为有用信号在合成信号中的位置,此时可通过MATLAB命令返回峰值和峰值出现的位置,即为被噪声淹没的有用信号的位置。

nx = 20;
x1 = 1:nx;
x = sin((pi/10)*x1);
% 构造合成信号
yy = [zeros(1,100),x,zeros(1,80)];
figure(1);plot(yy)
% 添加随机噪声
s = rand(1,200) - 0.5;
y = yy + s;
figure(2);plot(y,'b')
% 计算互相关序列
r = xcorr(x,y);
figure(3);plot(r)
n = length(r);
nn = (n - 1)/2;
figure(4);plot(-nn:nn,'r')
[maxR,id] = max(r)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.8.2.3 寻找被噪声淹没的周期信号的周期值

​ 利用自相关运算寻找被噪声淹没的周期信号的周期值。得到自相关运算的计算结果后,对比自相关序列与原始周期序列的周期是否相同。

N = 96;
n = 1:N;
x = cos(pi*0.25*n); 
d = rand(1,N) - 0.5; % 添加随机噪声
y = x + d; % 构建合成信号
r = xcorr(x,x); 
[peaks,locs] = findpeaks(r)  % 查找数据中的峰值及峰值所在位置
k = -28:28;
stem(k, r(68:124))
xlabel('时间序号n'); ylabel('振幅');

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值