MATLAB中,信号的频谱图该怎么绘制?横坐标如何标注出频率值?
一、什么是頻譜?
頻譜的全稱(chēng)是頻率譜密度。在對(duì)時(shí)域信號(hào)進(jìn)行認(rèn)識(shí)和研究的過(guò)程中非常不便,那我們?cè)撊绾胃庇^地認(rèn)識(shí)信號(hào),更清楚地了解信號(hào)的特點(diǎn)呢?
利用傅里葉變換將時(shí)域信號(hào)變換到頻域。
我們知道,在通信領(lǐng)域里傅里葉變換是非常非常非常重要的。傅里葉級(jí)數(shù)很清楚地說(shuō)明了,不同頻率分量的累加可以合成任何信號(hào),也就是說(shuō)一個(gè)時(shí)域信號(hào),在頻域是由不同頻率的分量組合而成的。
二、那在matlab中如何繪制頻譜呢?
如下代碼所示(針對(duì)無(wú)載波幅度和相位調(diào)制信號(hào)(CAP 4)繪制的)。
% 對(duì)發(fā)送信號(hào)進(jìn)行fft F_TxSignal = fft(TxSignal./length(TxSignal)); % 取單邊帶 FSingle_TxSignal = F_TxSignal(1:length(F_TxSignal)/2); % 符號(hào)持續(xù)時(shí)間 Tsamping = 1/(SamplingFrequency); % 總共的點(diǎn)數(shù) SamplingNum = length(F_TxSignal); % 計(jì)算單邊帶的頻率分辨率 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)');結(jié)果如下:
三、需要注意的事項(xiàng)
1、fft
其中,第一行是對(duì)發(fā)送信號(hào)進(jìn)行fft,并除以信號(hào)總數(shù),為什么除以總數(shù),這是因?yàn)樵趍atlab里的fft函數(shù)并沒(méi)有除以傅里葉變換中的1/N,具體可以找傅里葉變換的原公式思考一下。
2、單邊帶
在matlab中,利用fft得到的頻域信號(hào),如果直接繪制頻譜的話(huà),會(huì)得到雙邊譜,而且前半段是正頻率譜而后半段是負(fù)頻率譜,因此,如果想畫(huà)正確的雙邊譜則需要加一個(gè)fftshift函數(shù),將直流分量調(diào)整到頻譜中間,例如:
% 對(duì)發(fā)送信號(hào)進(jìn)行fft F_TxSignal = fftshift(fft(TxSignal./length(TxSignal))); % 符號(hào)持續(xù)時(shí)間 Tsamping = 1/(SamplingFrequency); % 總共的點(diǎn)數(shù) SamplingNum = length(F_TxSignal); % 計(jì)算單邊帶的頻率分辨率 for i = 1:length(F_TxSignal )F_xlabel_1(i) = (i-1)/(SamplingNum_1*Tsamping ); end % 繪制單邊帶頻譜 figure(2) plot(F_xlabel/1e6, 20*log10(abs(F_TxSignal )),'r');grid on; % xlim([0 500]);ylim([-140 -40]); xlabel('Frequency(MHz)');ylabel('Power(dBm)');結(jié)果如下:
3、采樣率
實(shí)際上matlab仿真中,會(huì)設(shè)定信號(hào)的波特率,因此,這個(gè)采樣率在有些情況下用波特率(這里屬于特定情況)。
4、繪制頻譜
為什么在最后繪制頻譜的時(shí)候用了20*log10(abs(F_TxSignal ))呢?因?yàn)橐脤?duì)數(shù)坐標(biāo)才能表示dB。
總結(jié)
以上是生活随笔為你收集整理的MATLAB中,信号的频谱图该怎么绘制?横坐标如何标注出频率值?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微班会教学设计一等奖
- 下一篇: 蜘蛛侠电脑壁纸(蜘蛛侠电脑壁纸logo)