代码:

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('\n***********************************************************\n');
fprintf(' <DSP using MATLAB> Problem 5.32 \n\n'); 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,便于上图说明道理。

《DSP using MATLAB》Problem 5.32的更多相关文章

  1. 《DSP using MATLAB》Problem 8.32

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  2. 《DSP using MATLAB》Problem 7.32

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  3. 《DSP using MATLAB》Problem 6.8

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  4. 《DSP using MATLAB》Problem 5.28

    昨晚手机在看X信的时候突然黑屏,开机重启都没反应,今天维修师傅说使用时间太长了,还是买个新的吧,心疼银子啊! 这里只放前两个小题的图. 代码: 1. %% ++++++++++++++++++++++ ...

  5. 《DSP using MATLAB》Problem 5.22

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% O ...

  6. 《DSP using MATLAB》Problem 5.10

    代码: 第1小题: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Out ...

  7. 《DSP using MATLAB》Problem 7.27

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  8. 《DSP using MATLAB》Problem 7.26

    注意:高通的线性相位FIR滤波器,不能是第2类,所以其长度必须为奇数.这里取M=31,过渡带里采样值抄书上的. 代码: %% +++++++++++++++++++++++++++++++++++++ ...

  9. 《DSP using MATLAB》Problem 7.25

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

随机推荐

  1. shell 文件条件判断

    按照文件类型进行判断 '-b 文件' 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) '-c 文件' 判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真) '-d 文件' 判 ...

  2. The difference between ppp and ndis

  3. day17-json格式转换

    Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用于h ...

  4. Python pycharm 引入需要使用的包

    第一步 第二步 第三步

  5. sass 变量的声明 嵌套

    sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可. $baseLineHeight: 2; $baseLineHeight: ...

  6. jdk8-四大函数式接口

    jdk8四大核心接口 1.Comsumer接口 2.Function函数型接口 3.断言型接口 4.供给型接口 核心接口的子接口

  7. 虚拟机中扩展linux系统存储空间

    reference: https://blog.csdn.net/greenapple_shan/article/details/52799631 https://blog.csdn.net/lyd1 ...

  8. CentOS7下cratedb备份及恢复(快照)

    一:创建存储库 1.1 概要 CREATE REPOSITORY repository_name TYPE type [ WITH (repository_parameter [= value], [ ...

  9. DevExpress Windows 10 UWP Controls新版亮点

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Windows 10 U ...

  10. android-DNS服务找不到

    1.重启eclipse 2.重新建立AVD 3.在建立AVD时sd卡数值不要填