说明:这两个小题的数学证明过程都不会,欢迎博友赐教。

直接上代码:

  1. %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. %% Output Info about this m-file
  3. fprintf('\n***********************************************************\n');
  4. fprintf(' <DSP using MATLAB> Problem 5.14 \n\n');
  5.  
  6. banner();
  7. %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  8.  
  9. % ------------------------------------------------------------------------
  10. % 1 x(n) = [1, 2, 3, 1,2,3, 1, 2, 3, 1, 2, 3] N=12 v=3
  11. % x(n) = x(n+v) N=4v
  12. % ------------------------------------------------------------------------
  13.  
  14. nn1 = [0:11];
  15. xx1 = [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3];
  16. NN1 = length(xx1); % length is 12
  17.  
  18. %m = mod_1(nn1, NN1);
  19. %x = [xx1 zeros(1, 0)]; % padding zeros
  20. %n = [nn1 max(nn1)+1:max(nn1)+6];
  21. x = xx1;
  22. n = nn1;
  23.  
  24. figure('NumberTitle', 'off', 'Name', 'P5.14.1 x(n)')
  25. set(gcf,'Color','white');
  26. subplot(2,1,1); stem(nn1, xx1);
  27. xlabel('n'); ylabel('x(n)');
  28. title('x(n) ori sequence'); grid on;
  29. subplot(2,1,2); stem(n, x);
  30. xlabel('n'); ylabel('x(n)');
  31. title('x(n) padding 0 zeros'); grid on;
  32.  
  33. %% =============================================================================
  34. %% DTFT X(w) of xn sequence, w=[0:2pi],
  35. %% =============================================================================
  36. MM = 500;
  37. [Xw_DTFT, w] = dtft1(x, n, MM);
  38.  
  39. magXw_DTFT = abs(Xw_DTFT); angXw_DTFT = angle(Xw_DTFT)/pi;
  40. realXw_DTFT = real(Xw_DTFT); imagXw_DTFT = imag(Xw_DTFT);
  41.  
  42. %% --------------------------------------------------------------
  43. %% START X_DTFT's mag ang real imag
  44. %% --------------------------------------------------------------
  45. figure('NumberTitle', 'off', 'Name', 'P5.14.1 X(w) DTFT of x(n)');
  46. set(gcf,'Color','white');
  47. subplot(2,2,1); plot(w/pi,magXw_DTFT); grid on; % axis([-2,2,0,15]);
  48. title('Magnitude Part');
  49. xlabel('frequency in \pi units'); ylabel('Magnitude |X\_DTFT|');
  50. subplot(2,2,3); plot(w/pi, angXw_DTFT); grid on; % axis([-2,2,-1,1]);
  51. title('Angle Part');
  52. xlabel('frequency in \pi units'); ylabel('Rad \pi'); %axis([-200,200,0,2]);
  53.  
  54. subplot('2,2,2'); plot(w/pi, realXw_DTFT); grid on;
  55. title('Real Part');
  56. xlabel('frequency in \pi units'); ylabel('Real');
  57. subplot('2,2,4'); plot(w/pi, imagXw_DTFT); grid on;
  58. title('Imaginary Part');
  59. xlabel('frequency in \pi units'); ylabel('Imaginary');
  60. %% --------------------------------------------------------------
  61. %% END X_DTFT's mag ang real imag
  62. %% --------------------------------------------------------------
  63.  
  64. %% ------------------------------------------------------------------
  65. %% DFT(k) of xn sequence, k=[0:N-1]
  66. %% w=2pi*k/N k=Nw/(2pi)
  67. %% ------------------------------------------------------------------
  68. N1 = length(x);
  69. k1 = [0 : N1-1];
  70. %k2 = [-N : N-1];
  71. %k3 = [-N/2 : N/2];
  72. Xk_DFT = dft(x, N1); % DFT
  73. magXk_DFT = abs( [ Xk_DFT ] ); % DFT magnitude
  74. angXk_DFT = angle( [Xk_DFT] )/pi; % DFT angle
  75. realXk_DFT = real(Xk_DFT); imagXk_DFT = imag(Xk_DFT);
  76.  
  77. figure('NumberTitle', 'off', 'Name', 'P5.14.1 DFT(k) of x(n)')
  78. set(gcf,'Color','white');
  79. subplot(2,1,1); stem(k1, magXk_DFT); hold on; plot(N1*w/(2*pi), magXw_DTFT,'r--'); hold off;
  80. %axis([-N/2, N/2, -0.5, 50.5]);
  81. xlabel('k'); ylabel('magnitude(k)');
  82. title('DFT magnitude of x(n), N=12'); grid on;
  83. subplot(2,1,2); stem(k1, angXk_DFT); hold on; plot(N1*w/(2*pi), angXw_DTFT,'r--'); hold off;
  84. %axis([-N/2, N/2, -0.5, 50.5]);
  85. xlabel('k'); ylabel('angle(k)');
  86. title('DFT angle of x(n), N=12'); grid on;

  运行结果:

原始序列长度为N=12,是4的倍数,这里v=3。

从图看出,k为4的倍数时,X(k)为非零值。

第2小题类似,这里直接上图:

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

  1. 《DSP using MATLAB》Problem 7.14

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

  2. 《DSP using MATLAB》Problem 6.14

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

  3. 《DSP using MATLAB》Problem 4.14

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

  4. 《DSP using MATLAB》Problem 2.14

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

  5. 《DSP using MATLAB》Problem 8.14

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

  6. 《DSP using MATLAB》Problem 7.26

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

  7. 《DSP using MATLAB》Problem 6.8

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

  8. 《DSP using MATLAB》Problem 5.7

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

  9. 《DSP using MATLAB》Problem 7.27

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

随机推荐

  1. linux系统管理 设置别名

    查看和设定别名 'alias' 查看系统中所有的命令别名 [root@ssgao1987 ~]# alias alias cp='cp -i' alias l.='ls -d .* --color=a ...

  2. 首席科学家马丁•福勒(Martin Fowler)

    现任思特沃克公司首席科学家的马丁·福勒先生是当今世界软件开发领域最具影响力的五位大师之一.作为一位敏捷软件开发方法的早期开拓者,福勒先生对IT 业的影响是不可估量的. 思特沃克公司是一家跨国专业IT ...

  3. IIS设置上传文件大小限制

    单位为字节. 500*1024*1024=524288000

  4. 51nod1009

    给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数.   例如:n = 12,包含了5个1.1,10,12共包含3个1,11包含2个1,总共5个1. Input 输入N( ...

  5. [深入理解Java虚拟机]<垃圾收集器与内存分配策略>

    Overview 垃圾收集考虑三件事: 哪些内存需要回收? 什么时候回收? 如何回收? 重点考虑Java堆中动态分配和回收的内存. Is Object alive? 引用计数法 给对象添加一个引用计数 ...

  6. [Spring-AOP-XML] 利用Spirng中的AOP和XML进行事务管理

    Spring中的AOP进行事务管理有三种方式 A.自定义事务切面 利用AspectJ来编写事务,我们一般把这个切面作用在service层中.其他代码在下面 编写一个Transaction实现类,通过S ...

  7. python3自学第二天,模块,三元运算

    1.模块的认识. sys模块,os模块等 如何引入模块 import os cmd_res1=os.system("dir") # 执行命令dir,不保存结果 print(cmd_ ...

  8. 使用generator生成dao、mapping和model

    我们在ssm框架开发的时候(不限于此框架),为了开发效率.有时候不得不提高一下代码速度.千篇一律的事情谁都头疼,比如写dao,写model,写mapping等等.不仅慢,而且一不留神,还会出错. 今天 ...

  9. 性能测试-2.Fiddler抓包工具的使用

    Fiddler基础知识(此文原文地址) Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修 ...

  10. zookeeper和dubbo中出现的问题

    报错出现timeout关键字 解决:在服务发布时,添加timeout字段 <!-- 5.服务发布 --> <dubbo:service interface="com.sxt ...