zoukankan      html  css  js  c++  java
  • 《DSP using MATLAB》Problem 2.18

    1、代码:

    function [y, H] = conv_tp(h, x)
    	% Linear Convolution using Toeplitz Matrix 
    	% ----------------------------------------------------
    	% [y,H] = conv_tp(h, x)
    	%  y    = output sequence in column vector form 
    	%  H    = Toeplitz matrix corresponding to sequence h so that y = Hx 
    	%  h    = Impulse response sequence in length(h)*1 column vector form 
    	%  x    = input sequence in length(x)*1 column vector form 
    	%
    for i = 1:length(h)
    	c(i) = h(i);
    end
    
    for j=(length(h)+1):(length(x)+length(h)-1)
        c(j)=0;
    end
    
    
    r(1)=h(1);
    
    for k=2:length(x)
        r(k)=0;
    end
    
    H=toeplitz(c,r)
    y=H*x;
    end
    

      

    2、用1小题中的函数验证习题2.17,代码如下:

    %% ------------------------------------------------------------------------
    %%            Output Info about this m-file
    fprintf('
    ***********************************************************
    ');
    fprintf('        <DSP using MATLAB> Problem 2.18 
    
    ');
    
    banner();
    %% ------------------------------------------------------------------------
    
    nx1 = [0:4]; x1 = [1, 2, 3, 4, 5];  
    nh1 = [0:3]; h1 = [6, 7, 8, 9];
    
    [y1, H] = conv_tp(h1', x1');
    
    
    y1
    

      运行结果:

           上图中H就是Toeplitz拓普利兹矩阵,可以看出除第一行、第一列外,每个元素都和其左上方元素相等。

    每一行向量就是系统的脉冲响应序列的线性移位,h(n-k),其中n=0,1,2,.....,length(h)-1。

            实际中,将序列h(n)摺叠,依次移位,得到Toeplitz矩阵。第一列就是h(n)加零补齐长度。

    牢记: 1、如果你决定做某事,那就动手去做;不要受任何人、任何事的干扰。2、这个世界并不完美,但依然值得我们去为之奋斗。
  • 相关阅读:
    利用“通过'反射方式'创建的对象”来创建对象的性能问题?
    Linq 学习笔记(一)
    说说数据类型转换帮助类
    使用公共静态属性的方式来代替公共静态字段(C#)
    支持差异数据保存的数据库实体类设计(二)(续)
    编程杂记
    Linq 学习笔记(二)
    UI版本WinDBG常用命令
    Oracle数据库卸载
    SAS框架问世
  • 原文地址:https://www.cnblogs.com/ky027wh-sx/p/8011372.html
Copyright © 2011-2022 走看看