Advertisement

数字信号处理matlab——系统响应和系统稳定

阅读量:

在时域中描述系统的特性主要采用差分方程和单位脉冲响应这两种方法。而在频域中分析系统的特征则可以通过使用系统函数这一工具来实现。对于线性时不变系统的性质而言,在实际应用中我们经常关注其因果性与稳定性这两个关键指标。其中稳定性指的是当输入信号是有界的时候,在经过系统的处理后输出结果也是有界的。另外一种体现稳定性的指标是其单位脉冲响应序列必须满足绝对可和这一条件。通过分析差分方程的系数信息可以判断系统的稳定性状态。而最普遍的一种验证方法则是将测试信号设定为单位阶跃序列并观察其最终稳态响应的行为特征

例一

描述了一个离散时间系统的差分方程模型
该系统的差分方程为输出y(n)等于输入当前时刻和前一时刻的加权平均加上输出前一时刻的衰减项
输入信号为离散时间序列R8
分析该系统对输入信号的时间域响应并绘制其时域波形图
确定该系统在单位脉冲序列作用下的输出特性

复制代码
    clc
    close all;
    clear all;
    A=[1,-0.9];
    B=[0.05,0.05];
    xn=[ones(1,8),zeros(1,42)];
    n=0:length(xn)-1;
    [hn,n]=impz(B,A,length(xn));
    yn=filter(B,A,xn);
    figure
    subplot(2,1,1);
    xlabel('n');
    ylabel('y(n)');
    stem(n,yn,'.');
    axis([0,length(n),min(yn),1.2*max(yn)]);
    title('System response to R8(n)');
    
    subplot(2,1,2);
    xlabel('n');
    ylabel('h(n)');
    stem(n,hn,'.');
    axis([0,length(n),min(hn),1.2*max(hn)]);
    title('System unit impulse response');
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
在这里插入图片描述

通过低通滤波器处理后的信号中,高频分量被有效抑制。其时域特征的变化速度得到显著降低,在阶跃附近出现明显的过渡区域。因此当输入为矩形脉冲序列时,其输出序列在起始和终止阶段均呈现出明显的过渡特征;而当输入为单位阶跃函数时,则同样表现出类似的过渡特性

例二

设定一个差分方程模型
y(n)=0.05x(n)+0.05x(n-1)+0.9y(n-1)
其中输入信号为单位阶跃序列x(n)=u(n)
要求计算系统的输出响应并绘制时间域响应曲线图
同时确定系统的脉冲传递函数

复制代码
    clc
    close all;
    clear all;
    A=[1,-0.9];
    B=[0.05,0.05];
    xn=ones(1,100);
    n=0:length(xn)-1;
    [hn,n]=impz(B,A,length(xn));
    yn=filter(B,A,xn);
    figure
    subplot(2,1,1);
    xlabel('n');
    ylabel('y(n)');
    stem(n,yn,'.');
    axis([0,length(n),min(yn),1.2*max(yn)]);
    title('System response to u(n)');
    
    subplot(2,1,2);
    xlabel('n');
    ylabel('h(n)');
    stem(n,hn,'.');
    axis([0,length(n),min(hn),1.2*max(hn)]);
    title('System unit impulse response');
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
在这里插入图片描述

例三

已知某系统的单位脉冲响应为h\left( n \right)=R_{10}\left( n \right); 试采用线性卷积法计算信号x\left( n \right)=R_{8}\left( n \right)经过系统h\left( n \right)后的输出信号y\left( n \right)

复制代码
    clc
    close all;
    clear all;
    xn=ones(1,8);
    n=0:length(xn)-1;
    figure
    subplot(3,1,1);
    stem(n,xn,'.');
    xlabel('n');
    ylabel('xn');
    axis([0,30,0,1.2*max(xn)]);
    
    hn=[ones(1,10),zeros(1,10)];
    m=0:length(hn)-1;
    subplot(3,1,2);
    stem(m,hn,'.');
    xlabel('m');
    ylabel('hn');
    axis([0,30,0,1.2*max(hn)]);
    
    yn=conv(hn,xn)
    l=0:length(xn)+length(hn)-2;
    subplot(3,1,3);
    stem(l,yn,'.');
    xlabel('l');
    ylabel('yn');
    axis([0,30,0,1.2*max(yn)]);
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
在这里插入图片描述

例四

确定该系统的单位冲激响应为h\left[n\right]={\delta }\left[n\right]+2.5{\delta }\left[n-1\right]+2.5{\delta }\left[n-2\right]+{\delta }\left[n-3\right]
通过应用线性卷积方法计算输入信号x\left[n\right]={R}_{8}\left[n\right]与系统h\left[n\right]之间的输出反应y\left[n\right]

复制代码
    clc
    close all;
    clear all;
    xn=ones(1,8);
    n=0:length(xn)-1;
    figure
    subplot(3,1,1);
    stem(n,xn,'.');
    xlabel('n');
    ylabel('xn');
    axis([0,20,0,1.2*max(xn)]);
    
    hn=[1,2.5,2.5,1,zeros(1,6)];
    m=0:length(hn)-1;
    subplot(3,1,2);
    stem(m,hn,'.');
    xlabel('m');
    ylabel('hn');
    axis([0,20,0,1.2*max(hn)]);
    
    yn=conv(hn,xn)
    l=0:length(xn)+length(hn)-2;
    subplot(3,1,3);
    stem(l,yn,'.');
    xlabel('l');
    ylabel('yn');
    axis([0,20,0,1.2*max(yn)]);
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
在这里插入图片描述

例五

复制代码
    y(n)=1.8237y(n-1)-0.9801y(n-2)+1/100.49x(n)-1/100.49x(n-2)
    
    
      
    
    代码解释

该谐振器的固有角频率为0.4 rad

复制代码
    clc
    close all;
    clear all;
    un=ones(1,256);
    n=0:length(un)-1;
    A=[1,-1.8237,0.9801];
    B=[1/100.49,0,-1/100.49];
    yn=filter(B,A,un);
    figure
    stem(n,yn,'.');
    xlabel('n');
    ylabel('yn');
    axis([0,length(un),1.2*min(yn),1.2*max(yn)]);
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
在这里插入图片描述

平稳运行状态
评估系统的稳定性
通过施加单位阶跃信号至输入端
监测输出波形特征
观察到输出波形趋于一个恒定值
表明系统达到稳定状态
若出现异常波动则表明系统不稳定

例六

复制代码
    y(n)=1.8237y(n-1)-0.9801y(n-2)+1/100.49x(n)-1/100.49x(n-2)
    
    
      
    
    代码解释

谐振器的工作频率为 f= \frac{1}{2\pi} \cdot 2\pi \cdot 0.4 = 796 Hz (假设基频计算)

复制代码
    clc
    close all;
    clear all;
    n=0:256;
    xn=sin(0.014*n)+sin(0.4*n);
    A=[1,-1.8237,0.9801];
    B=[1/100.49,0,-1/100.49];
    yn=filter(B,A,xn);
    figure
    stem(n,yn,'.');
    xlabel('n');
    ylabel('yn');
    axis([0,length(n),1.2*min(yn),1.2*max(yn)]);
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解释
在这里插入图片描述

在时域中分析系统的响应方式有两种:其一为利用差分方程计算系统的输出时需考虑初始条件的影响;其二则是在已知系统的单位脉冲响应情况下可以通过对输入信号与系统的单位脉冲响应进行线性卷积运算来计算系统的输出。

谐振器对于某个频率而言具有谐振特性,在实验中所使用的谐振频率设定为0.4弧度。相应的稳定波形方程则为正弦函数形式sin(0.4n)

全部评论 (0)

还没有任何评论哟~