数字信号处理_实验一_信号、系统及系统响应
 发布时间 
 阅读量: 
 阅读量 
文章目录
- 
- 实验内容
 - 实验要求
 - 代码实现
 - 
- 基本离散信号
 - 系统响应
 - DTFT
 - 采样定理
 
 
 
实验内容
- 离散信号的分析
 
离散时间非周期信号x(n)生成,时域观察,频域分析
- 系统响应分析
 
生成实验用的输入序列x(n)和系统单位冲激响应序列h(n)、时域离散信号、系统和系统响应分析、卷积定理的验证
实验要求
- 附上所有信号序列,系统单位冲激响应及响应序列的时域和频域特性曲线,并对结果进行分析和解释
 - 计算线性卷积、z变换和系统函数
 - 编程计算DTFT
 - 演示采样定理,即采样频率大于信号最高频率两倍才能避免频域混叠现象
 
代码实现
基本离散信号
- 冲激信号
 
    n=-5:5;
    x=n==0;%n=0时x=1
    stem(n,x,'filled');
    axis([-5 5 0 1.1*max(x)]);
    xlabel('time');ylabel('range')
    
    
      
      
      
      
      
    
        
- 阶跃信号
 
    n=-5:5;
    x=n>=0;%n>=0时x=1
    stem(n,x,'filled');
    axis([-5 5 0 1.1*max(x)]);
    xlabel('time');ylabel('range')
    
    
      
      
      
      
      
    
        
- 实指数序列
 
    function [x,n]=realindex(ns,nf,a)
    % a实指数的底数,ns序列起点,nf序列终点
    % x实指数序列的值,n序列位置
    n=ns:nf;
    x=a.^n;
    stem(n,x,'filled');
    if(a<0)
    axis([ns nf -1.1*max(x) 1.1*max(x)]);
    elseif(a>0)
    axis([ns nf 0 1.1*max(x)]);
    end
    
    
    ->
    subplot(1,2,1)
    [x,n]=realindex(-5,5,2);
    subplot(1,2,2)
    [x,n]=realindex(-5,5,-2);
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
        
- 虚指数序列
 
    function [x,n]=complexindex(ns,nf,w,q)
    % ns序列起点,nf序列终点
    % x复指数序列的值,n序列位置
    n=ns:nf;
    x=exp(1i*w+q).^n;
    xr=real(x);%实部
    xi=imag(x);%虚部
    xa=abs(x);%模
    xn=angle(x);%相角
    subplot(2,2,1),stem(n,xr,'filled'),title('实部');
    subplot(2,2,2),stem(n,xi,'filled'),title('虚部');
    subplot(2,2,3),stem(n,xa,'filled'),title('模');
    subplot(2,2,4),stem(n,xn,'filled'),title('相角');
    end
    
    
    >>[x,n]=complexindex(-5,5,0.5,-0.2)
    
    x =
    
      列 1 至 3
    
      -2.1777 - 1.6268i  -0.9262 - 2.0237i   0.1289 - 1.8176i
    
      列 4 至 6
    
       0.8060 - 1.2553i   1.0719 - 0.5856i   1.0000 + 0.0000i
    
      列 7 至 9
    
       0.7185 + 0.3925i   0.3622 + 0.5641i   0.0388 + 0.5474i
    
      列 10 至 11
    
      -0.1870 + 0.4086i  -0.2947 + 0.2202i
    
    
    n =
    
    -5    -4    -3    -2    -1     0     1     2     3     4     5
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
        
系统响应
栗子-01
系统的差分方程:
y(n-2)+2y(n-1)+77y(n)=x(n)
设一个系统输入
x(n)=10(0.8)^n~~~(-5\leq n\leq 5)
求解系统的单位冲激响应h(n)和系统对输入x(n)的响应y(n)
解:
线性时不变系统的的输入x(n)输出y(n)满足y(n)=x(n)*h(n)
    function [y,ny]=conv_m(x,nx,h,nh)
    nys=nx(1)+nh(1);
    nyz=nx(length(x))+nh(length(h));
    ny=nys:nyz;
    y=conv(x,h);
    end
    
    
      
      
      
      
      
      
    
            a=[1,2,77];b=[1];
    n=-5:5;
    x=n==0;
    h=filter(b,a,x);
    subplot(2,1,1),stem(n,h,'filled');title('冲激响应')
    xlabel('n');ylabel('h(n)')
    xn=10*(0.8).^n;
    [y,ny]=conv_m(xn,n,h,n);
    subplot(2,1,2),stem(ny,y,'filled'),title('输入响应');
    xlabel('n');ylabel('y(n)');
    
    
      
      
      
      
      
      
      
      
      
      
    
        
- z变换
 
还是栗子-01式子(1)
H(z)=\frac{y(z)}{x(z)}=\frac{1}{77+2z^{-1}+z^{-2}}
    top=[1,0];bottom=[77,2,1];
    [r,p,c]=residuez(top,bottom);%留数,极点,直接项
    disp('r=');disp(r');
    disp('p=');disp(p');
    disp('c=');disp(c');
    
    ->
    r=
       0.0065 - 0.0007i   0.0065 + 0.0007i
    
    p=
      -0.0130 - 0.1132i  -0.0130 + 0.1132i
    
    c=
    	[]
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
        h(n)=[(0.065-0.0007i)(0.013+0.1132i)^n+(0.0065+0.0007i)(0.013-0.1132i)^n]u(n)
DTFT
以栗子-01中的输入信号x(n)=10(0.8)^n做离散时间信号的傅里叶变换
X(e^{j\omega})=DTFT(x(n))=\sum_{n=-\infty}^{\infty}x(n)e^{-j\omega n}
    n=-5:5;
    xn=10*(0.8).^n;
    k=0:200;
    w=pi*k/200;
    nk=n'*k;%取样矩阵
    x_e=xn*(exp(-1j*pi/200)).^nk;
    magx=abs(x_e);%dtft的模
    angx=angle(x_e);%相位
    subplot(3,1,1),stem(n,xn),title('信号序列');
    subplot(3,1,2),plot(w/pi,magx),title('幅频特性');
    subplot(3,1,3),plot(w/pi,angx),title('相频特性');
    
    
      
      
      
      
      
      
      
      
      
      
      
    
        
采样定理
首先信号采样相当于原信号f(t)与抽取信号\delta_T(t)相乘,在周期N的整数倍点上的取样值等于原来的序列值,时域相乘相当于频域卷积
x_p(t)=x(t)p(t)=\sum_{k=-\infty}^{\infty}x(kT)\delta(t-kT)\\ 
    t = -0.1:0.001:0.1;%该参数用于画原信号图形
    k = 0:200;%时域取样
    n = -999:0;%频域取样
    f = sin(2*pi*60*t)+cos(2*pi*25*t);%原函数, 由t的取值可得f有201个值
    s = exp(-j*2*pi/length(k));
    skn = s.^(k'*n);%代公式
    F = f*skn;%对原函数进行傅里叶变换
    subplot(2,1,1)
    plot(t, f);%画出采原函数序列图
    title('原信号');
    xlabel('时间t(s)');
    j = 1:length(F);
    subplot(2,1,2)
    plot(j,abs(F),'r')%画出序列的DFT图
    title('原信号的DFT图');
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
        
    function Signal_Rebuilt(frequency)
    %需要输入采样频率frequency
    T= 1/frequency;%抽样周期
    gs = -0.1:T:0.1;
    fg = sin(2*pi*60*gs)+cos(2*pi*25*gs);
    figure(2)
    subplot(2,1,1)
    stem(gs, fg)
    title('采样信号');
    xlabel('时间t(s)');
    %绘制由采样信号重建的信号图
    y = -0.1:0.001:0.1;
    ln = -0.1/T:0.1/T;
    M=ones(length(ln),1)*y-ln'*T*ones(1,length(y));
    fs = fg*sinc(frequency*M);
    subplot(2,1,2)
    plot(y,fs,'r')
    title('重建信号');
    xlabel('时间t(s)');
    end
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
            Signal_Rebuilt(100)
    
    
      
    
        
    Signal_Rebuilt(400)
    
    
      
    
        
    Signal_Rebuilt(600)
    
    
      
    
        
全部评论 (0)
 还没有任何评论哟~ 
