離散傅利葉變換(dft)是傅利葉變換在時域和頻域上都呈現離散的形式,將時域訊號的取樣變換為在頻域的取樣。在實際應用中通常採用快速傅利葉變換(fft)以高效計算dft。
其中n為dft的點數,點數越大頻率解析度越高,k=0,1,2,…,n-1。
離散傅利葉變換可以看做是離散時域訊號與不同頻率的離散正弦訊號進行相關運算得到相應的頻率對應的幅值(複數)。
clc
clear
close all
n=2048;% adc取樣點數
fs=1e6;% adc取樣率
t=(0:n-1)/fs;% 取樣時間序列
f1=60e3;% 訊號頻率1
f2=80e3;% 訊號頻率2
signal = cos(2*pi*f1 * t) + cos(2*pi*f2 * t);
figure;
plot(t,signal)
;axis(
[0 inf -2.2 2.2]);
xlabel();
title(
'時域訊號');
% fft
nn=2048;% nn點dft
xn=fft(signal,nn)/nn;% 計算signal的nn點快速傅利葉變換
f0=fs/nn; % 頻率解析度
f=(0:nn-1)*f0; % 頻率序列
fk=(0:nn-1)
; % 譜線序列
a=abs(xn)
; % 幅值序列
phase=atan(-real(xn)./imag(xn))/pi*180; % 相位序列
figure;
subplot(2,1,1)
;plot(f(1:nn/2),a(1:nn/2))
;xlabel(
'頻率/hz'
);ylabel(
'幅度');
% axis(
[50e3 90e3 0 inf]);
title(
'fft幅頻譜');
subplot(2,1,2)
;plot(f(1:nn/2),phase(1:nn/2))
;xlabel(
'頻率/hz'
);ylabel(
'相位/°');
title(
'fft相頻譜');
figure;
subplot(2,1,1)
;plot(f(1:nn/2),real(xn(1:nn/2)));
xlabel(
'頻率/hz');
title(
'頻譜實部');
subplot(2,1,2)
;plot(f(1:nn/2),imag(xn(1:nn/2)));
xlabel(
'頻率/hz');
title(
'頻譜虛部'
數字訊號處理 觀察訊號的頻譜
今天學習將時域訊號通過fft轉換為頻域訊號之後,將其各個頻率分量的幅值繪製成圖,可以很直觀地觀察訊號的頻譜。重點理解fft變換的過程。程式來自參考書 python科學計算 import numpy as np import pylab as pl from pylab import mpl 首先定義...
分析訊號質量用功率譜分析還是頻譜分析?
一 定義 功率譜密度 對於具有連續頻譜和有限平均功率的訊號或雜訊,表示其頻譜分量的單位頻寬功率的頻率函式。頻譜分析 對訊號進行傅利葉變換,用該方法對振動的訊號進行分解,並按頻率順序展開,使其成為頻率的函式,進而在頻率域中對訊號進行研究和處理的一種過程。隨機過程 stochastic process ...
余弦訊號DFT頻譜分析(繼續)
以前談到序列的實際長度可以通過零填充方法加入,使得最終增加n新增表觀解析度。但它並沒有解決洩漏頻率的問題。根本原因在於洩漏視窗選擇的頻率。由於矩形窗突然被切斷,頻譜旁瓣相對幅度過大,造成洩漏分量很。因此,與fir路一樣,我們想到了其它窗。接上次的樣例,矩形窗 ts 0.01 n 0 24 y sin...