当前位置:   article > 正文

MATLAB方波生成,以及周期、脉宽对信号频谱的影响_matlab方波函数

matlab方波函数

方波生成主要是函数square的运用。可直接 help square看到相关的代码

  1. t = linspace(-2*pi,2*pi,150);%150是从-2π到2π取150个点,可取其他数字,不写默认为100
  2. x = square(2*t);%数字2可改变方波的周期。另外可square(2*t,75)改变方波占空比,使得方波正的部分的占空比为75%
  3. plot(t/pi,x)
  4. grid on

t的区间内取点个数越大方波越正,默认为100的时候有点斜。

  1. t = linspace(-2*pi,2*pi,500);
  2. x = square(4*t);%周期相关
  3. subplot(2,3,1)
  4. plot(t/pi,x)
  5. subplot(2,3,2)
  6. plot(abs(fft(x)))
  7. grid on

周期的影响:

改变周期做对比可发现,系数变大,周期变小,谱线间隔变大,频谱变稀疏

脉宽的影响:

脉宽由信号的周期和占空比确定,其计算公式是脉宽W=T×P(T:周期,P:占空比)。固定周期,增加占空比到75如下图所示

可看出脉宽增加的时候频谱的谱线间隔变小,频谱变稠密。此时可以明显的看到频谱的幅度也减小,不知道事实如此还是我代码有问题,没检索到相关内容佐证

 

------------------------------------------------按照大佬的思路,加入了幅值矫正和调整0频位置

  1. t = linspace(-2*pi,2*pi,500);
  2. x = square(2*t);
  3. N = length(x);
  4. Fs = 50;%设定采样频率50hz
  5. f = (0:N-1)*Fs/N;%将时间横坐标转换为频率横坐标:f = (0:N-1)*Fs/N
  6. f2 = (N/2:N-1)*Fs/N-Fs/2;
  7. subplot(2,2,1)
  8. plot(t/pi,x)
  9. subplot(2,2,2)
  10. y = abs(fftshift(fft(x)));
  11. y2=2*y(N/2:N-1)/N;%幅值修正得到真实幅值
  12. plot(f2,y2)
  13. x = square(2*t,75);
  14. y = abs(fftshift(fft(x)));
  15. y2=2*y(N/2:N-1)/N;
  16. subplot(2,2,3)
  17. plot(t/pi,x)
  18. subplot(2,2,4)
  19. plot(f2,y2)
  20. grid on
  21. % plot((0:7)*0.0001,[0 0.5 1 1 1 1 0.5 0])

参考资料:

square的MATLAB解释

MATLAB绘制频谱图代码

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/106563
推荐阅读
相关标签
  

闽ICP备14008679号