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

    代码:

    function [y] = ovrlpadd_v3(x, h, N)
    %% Overlap-Add method of block convolution
    %% ------------------------------------------------------
    %% [y] = ovrlpadd(x, h, N)
    %% y = output sequence
    %% x = input sequence
    %% h = impulse response
    %% N = block length >= 2*length(h)-1
    
    N = 2^(ceil(log10(N)/log10(2)))  
    
    Lx = length(x);                        % ML    
    L = length(h);                         % length of impulse response
    
    Hk_FFT = fft(h, N);
    
    M = floor((Lx)/(L))                   % number of bolck
    Y = zeros(1, Lx+N-L)
    
    % convolution with successive blocks
    for m = 0:M-1
    	xm = x(m*L+1 : m*L+L);                                     % length is L
    	XMk_FFT = fft(xm, N);
    	YMk_FFT = XMk_FFT .* Hk_FFT;
    	ym = real(ifft(YMk_FFT))                                   % length is 2L-1
    	%Y(m*L+1 : m*L+(2*L-1)) = Y(m*L+1 : m*L+(2*L-1)) + ym
    	Y(m*L+1 : m*L+N) = Y(m*L+1 : m*L+N) + ym
    end
    
    y = Y;
    

      

    %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    %%            Output Info about this m-file
    fprintf('
    ***********************************************************
    ');
    fprintf('        <DSP using MATLAB> Problem 5.32 
    
    ');
    
    banner();
    %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    % -------------------------------------------------------------
    %           Overlap-Add                 
    % -------------------------------------------------------------
    
    n1 = [0:8-1];
    x1 = cos(pi*n1/500);
    N1 = length(x1);
    
    nh = [0:3];
     h = [1, -1, 1, -1];
     L = length(h);
    
    M = N1/L;
    
    N = 2*L-1; 
    
    y = ovrlpadd_v3(x1, h, N);            % FFT
    

      运行结果:

           原题中x(n)长4000,不好看图说明,这里假设长度只有8,便于上图说明道理。

    牢记: 1、如果你决定做某事,那就动手去做;不要受任何人、任何事的干扰。2、这个世界并不完美,但依然值得我们去为之奋斗。
  • 相关阅读:
    Java Socket编程(三)发送和接收深入
    Java温故知新 集合类
    DataTable到实体类的转换 中庸
    经典设计模式
    门面模式
    java经典反射机制(1)
    装饰模式
    单子模式
    sql经典题目(1)
    如何学习struts框架?
  • 原文地址:https://www.cnblogs.com/ky027wh-sx/p/9484143.html
Copyright © 2011-2022 走看看