在做通信系统仿真时我们常常需要画出信号1X的频谱图来进行信号1X的分析,但是MATLAB中只提供了 fft 函数因此每次总要写出几条语句来画出信号1X的频谱,十分不方便所以我自巳写了一个频谱绘制函数 SpecPlot ,可以用来绘制单边频谱或者双边频谱
% fs为采样频率(高于两倍信号1X频率)
创建一个新的 .m 文件,复制函数代码到新建嘚文件中注意文件名与函数名应该一致,因此应该保存为 SpecPlot.m 将该文件放在主程序目录下就可以,主程序就可以对该函数进行调用调用格式如下:
- signal 为输入信号1X,即需要画频谱的信号1X
- fs 为采样信号1X,一般需要大于两倍的信号1X最高频率
- bandtype 字符串类型,选择单边频谱或者双边频譜对应 ‘single’ 或者 ‘double’ ,默认为 ‘double’
以两个正弦函数为例,两个信号1X频率分别为150Hz、200Hz采样频率为500Hz,画出:
- 150Hz信号1X的双边频谱
- 和两个信号1X叠加后的单边频谱
150Hz正弦信号1X双边频谱图:
150Hz和200Hz正弦波叠加信号1X单边频谱图:
可以看到画出来的图满足理论频谱大家可以根据自己的需求对函數进行修改,使画出来的频谱更加美观