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

2.3 线性和非线性系统

y [ n ] − 0.4 y [ n − 1 ] + 0.75 y [ n − 2 ] = 2.2403 x [ n ] + 2.4908 x [ n − 1 ] + 2.2403 x [ n − 2 ] y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2] y[n]0.4y[n1]+0.75y[n2]=2.2403x[n]+2.4908x[n1]+2.2403x[n2]

​ 用MATLAB仿真上式描述的系统,输入三个不同的输入序列 x 1 [ n ] x_1[n] x1[n] x 2 [ n ] x_2[n] x2[n] x [ n ] = a x 1 [ n ] + b x 2 [ n ] x[n]=ax_1[n]+bx_2[n] x[n]=ax1[n]+bx2[n],计算并求出相应的输出响应 y 1 [ n ] y_1[n] y1[n] y 2 [ n ] y_2[n] y2[n] y [ n ] y[n] y[n]

% 生成输入序列
clf;
n = 0:40;a = 2;b = -3;
x1 = cos(2*pi*0.1*n);
x2 = cos(2*pi*0.4*n);
x = a*x1 + b*x2;
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
ic = [0 0];  % 设置零初始条件
y1 = filter(num,den,x1,ic);  % 计算输出y1[n]
y2 = filter(num,den,x2,ic);  % 计算输出y2[n]
y = filter(num,den,x,ic);  % 计算输出y[n]
yt = a*y1 + b*y2;
d = y - yt;  % 计算差值输出d[n]
% 画出输出和差信号
subplot(3,1,1)
stem(n,y)
ylabel('振幅');title('加权输入:a\cdot x_|1{[n] + b\cdot x_{2}[n]的输出');
subplot(3,1,2)
stem(n,yt);
ylabel('振幅');title('加权输出:a\cdot x_|1{[n] + b\cdot x_{2}[n]');
subplot(3,1,3)
stem(n,d);
xlabel('时间序号n');ylabel('振幅');title('差信号');

在这里插入图片描述

2.4 时变系统和时不变系统

y [ n ] − 0.4 y [ n − 1 ] + 0.75 y [ n − 2 ] = 2.2403 x [ n ] + 2.4908 x [ n − 1 ] + 2.2403 x [ n − 2 ] y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2] y[n]0.4y[n1]+0.75y[n2]=2.2403x[n]+2.4908x[n1]+2.2403x[n2]

​ 用MATLAB仿真上式给出的系统,以产生两个不同的输入序列x[n]和x[n-D],计算并画出相应的输出序列 y 1 [ n ] y_1[n] y1[n] y 2 [ n ] y_2[n] y2[n] y 1 [ n ] − y 2 [ n + D ] y_1[n]-y_2[n+D] y1[n]y2[n+D]

% 生成输入序列
clf;
n = 0:40; D = 10; a = 3; b = -2;
x = a*cos(2*pi*0.1*n) + b*cos(2*pi*0.4*n);
xd = [zeros(1,D) x];
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
ic = [0 0];  % 设置初始条件
% 计算输出y[n]
y = filter(num,den,x,ic);
% 计算输出yd[n]
yd = filter(num,den,xd,ic);
% 计算差值输出d[n]
d = y - yd(1 + D:41 + D);
% 绘制输出结果
subplot(3,1,1)
stem(n,y);
ylabel('振幅');title('输出y[n]');grid;
subplot(3,1,2)
stem(n,yd(1:41));
ylabel('振幅');title('延时输出');grid
subplot(3,1,3)
stem(n,d)
xlabel('时间序号n');ylabel('振幅');
title('差值信号');grid;

在这里插入图片描述

2.5 线性时不变离散时间系统

​ MATLAB命令 y = i m p z ( n u m , d e n , N ) y=impz(num,den,N) y=impz(num,den,N)可用来计算因果线性时不变离散时间系统的冲激响应的前N个样本。

y [ n ] − 0.4 y [ n − 1 ] + 0.75 y [ n − 2 ] = 2.2403 x [ n ] + 2.4908 x [ n − 1 ] + 2.2403 x [ n − 2 ] y[n]-0.4y[n-1]+0.75y[n-2]=2.2403x[n]+2.4908x[n-1]+2.2403x[n-2] y[n]0.4y[n1]+0.75y[n2]=2.2403x[n]+2.4908x[n1]+2.2403x[n2]

​ 计算上式描述的系统的冲激响应。

% 计算冲激响应y
clf;
N = 40;
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
y = impz(num,den,N);
% 画出冲激响应
stem(y)
xlabel('时间序号n');ylabel('振幅');title('冲激响应');
grid;

在这里插入图片描述

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值