MATLAB是电子工程师的基础技能之一,学习MATLAB也有利于为就业转职增加筹码。今天将分享关于MATLAB的高级机器啊,如何在MATLAB中绘制信号的频谱图?横坐标如何标注出频率值?绘制过程中需要注意什么?
学习Cadence Sigrity,一步到位!
1、什么是频谱?绘制的思路是什么?
频谱是指频率谱密度,思路是傅里叶变换。傅里叶级数明确地说明了,不同频率分量的累加可以合成任何信号,也就是说一个时域信号,在频域是由不同频率的分量组合而成的。
2、如何在MATLAB中绘制信号的频谱图?
代码如下:(注:针对无载波幅度和相位调制信号CAP 4绘制)
//对发送信号进行fft
F_TxSignal = fft(TxSignal./length(TxSignal));
//取单边带
FSingle_TxSignal = F_TxSignal(1:length(F_TxSignal)/2);
//符号持续时间
Tsamping = 1/(SamplingFrequency);
//总共的点数
SamplingNum = length(F_TxSignal);
//计算单边带的频率分辨率
for i = 1:length(FSingle_TxSignal)
F_xlabel_1(i) = (i-1)/(SamplingNum_1*Tsamping );
end
//绘制单边带频谱
figure(2)
plot(F_xlabel/1e6, 20*log10(abs(FSingle_TxSignal)),'r');grid on;
//xlim([0 500]);ylim([-140 -40]);
xlabel('Frequency(MHz)');ylabel('Power(dBm)');
结果如下:
3、绘制过程中需要注意什么?
①fft
在以上的代码中,第一行是对发送信号进行fft,并除以信号总数,原因是在matlab里的fft函数没有除以傅里叶变换中的1/N。
②单边带
在MATLAB中,利用FFT函数得到的频域信号,若是直接绘制频谱,将得到双边谱(前半段是正频率谱,后半段是负频率谱)。若是想得到正确的双边谱,需加fftshift函数,将直流分量调整到频谱中间。
第一行代码更换成F_TxSignal = fftshift(fft(TxSignal./length(TxSignal)));
③采样率
在MATLAB仿真中,特定情况下会设定信号的波特率(这种属于特定情况)
④绘制频谱
绘制频谱时采用“20*log10(abs(F_TxSignal ))”,原因是要用对数坐标表示dB。
以上是MATLAB仿真的高级技巧。
欲了解更多的通信知识,可关注凡亿课堂。