【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法)

举报
李锐博恩 发表于 2021/07/15 05:21:30 2021/07/15
【摘要】 如果一个N点序列在任一方向上移位,那么其结果都不在是位于 0 < = n <= N-1之间。因此,需要进行下面的操作: 为了形象化,可以设想将序列x(n)放在一个圆上,现在将这个圆旋转k个样本,并从 0 < = n <= N-1展开这个序列。 它的DFT给出为: 下面给出循环移位的函数: function y = cirshf...

如果一个N点序列在任一方向上移位,那么其结果都不在是位于 0 < = n <= N-1之间。因此,需要进行下面的操作:

为了形象化,可以设想将序列x(n)放在一个圆上,现在将这个圆旋转k个样本,并从 0 < = n <= N-1展开这个序列。

它的DFT给出为:


下面给出循环移位的函数:


  
  1. function y = cirshftt(x,m,N)
  2. % Circular shift of m samples in sequence x over 0:N-1(time domain)
  3. % _________________________________________________________________
  4. % y = cirshftt(x,m,N)
  5. % y = output sequence containing the circular shift
  6. % x = input sequence of length <= N
  7. % N = size of circular buffer
  8. % Method: y(n) = x( (n-m) mod N )
  9. % Check for length of x
  10. if length(x) > N
  11. error('N must be >= the length of x');
  12. end
  13. x = [x,zeros(1,N-length(x))];
  14. n = [0:1:N-1];
  15. n = mod(n-m,N);
  16. y = x(n+1);

下面给出一个案例,实现循环移位:

已知一个11点的序列x(n) = 10(0.8)^n,0 \leq n \leq 10

a.求出并画出循环左移4个样本后的序列;

b.假设x(n)是一个15点序列(补零),求出循环右移3个样本后的序列。


  
  1. clc
  2. clear
  3. close all
  4. n = 0:1:10;
  5. x = 10 * (0.8).^n;
  6. N = 11;
  7. m = -4;
  8. y1 = cirshftt(x,m,N);
  9. subplot(2,2,1);
  10. stem(n,x);
  11. title('x(n) with n over [0,10]');
  12. xlabel('n');
  13. subplot(2,2,2);
  14. stem(n,y1);
  15. title('circularly left shift for 4');
  16. xlabel('n');
  17. x = [x,zeros(1,4)];
  18. n = 0:1:14;
  19. N = 15;
  20. m = 3;
  21. y2 = cirshftt(x,m,N);
  22. subplot(2,2,3);
  23. stem(n,x);
  24. title('x(n) with n over [0,15] by padding 0');
  25. xlabel('n');
  26. subplot(2,2,4);
  27. stem(n,y2);
  28. title('circularly right shift for 3');
  29. xlabel('n');

 

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/83511675

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。