这个例子展示了如何获得与周期图等效的非参数功率谱密度(PSD)估计值fft
.的输出,示例向您展示了如何适当地缩放fft
均匀长度输入,归一化频率和赫兹,以及单侧和双面PSD估计。
使用两者获得在1khz采样的均匀长度信号的周期图fft
而且周期图
.比较结果。
创建一个由100hz正弦波组成的信号N(0,1)加性噪声。采样频率为1khz。信号长度为1000个样本。使用随机数生成器的默认设置以获得可重复的结果。
rng默认的Fs = 1000;t = 0:1/Fs:1-1/Fs;X = cos(2* *100*t) + randn(size(t));
得到周期图fft
.信号是实值且长度相等。因为信号是实值,所以只需要对正频率或负频率进行功率估计。为了节省总功率,将两组中出现的所有频率(正频率和负频率)乘以2。零频率(DC)和奈奎斯特频率不会出现两次。画出结果。
N =长度(x)XDFT = fft(x);xdft = xdft(1:N/2+1);psdx = (1/(Fs*N)) * abs(xdft).^2;Psdx (2:end-1) = 2* Psdx (2:end-1);freq = 0:Fs/length(x):Fs/2;情节(频率、10 * log10 (psdx))网格在标题(“使用FFT的周期图”)包含(的频率(赫兹)) ylabel (“功率/频率(dB / Hz)”)
计算并绘制周期图周期图
.证明两个结果是相同的。
周期图(x, rectwin(长度(x)),长度(x), Fs)
mxerr = max(psdx'-periodogram(x,rectwin(length(x)),length(x),Fs)))
Mxerr = 3.4694 -18
使用fft
用归一化频率对输入产生周期图。创建一个由正弦波组成的信号N(0,1)加性噪声。正弦波的角频率为
rad /样品。使用随机数生成器的默认设置以获得可重复的结果。
rng默认的N = 0:999;X = cos(/4*n) + randn(size(n));
得到周期图fft
.信号是实值且长度相等。因为信号是实值,所以只需要对正频率或负频率进行功率估计。为了节省总功率,将两组中出现的所有频率(正频率和负频率)乘以2。零频率(DC)和奈奎斯特频率不会出现两次。画出结果。
N =长度(x)XDFT = fft(x);xdft = xdft(1:N/2+1);psdx = (1/(2*pi*N)) * abs(xdft).^2;Psdx (2:end-1) = 2* Psdx (2:end-1);freq = 0:(2*pi)/N:pi;情节(频率/π,10 * log10 (psdx))网格在标题(“使用FFT的周期图”)包含(归一化频率(\乘以\ π rad/sample)) ylabel (的功率/频率(dB / rad /样本))
计算并绘制周期图周期图
.证明两个结果是相同的。
周期图(x, rectwin(长度(x)),长度(x))
Mxerr = max(psdx'-periodogram(x,rectwin(length(x)),length(x))))
Mxerr = 1.4211e-14
使用fft
用归一化频率对复值输入产生周期图。信号是一个角频率为的复指数
复值的Rad /sampleN(0,1)噪音。将随机数生成器设置为可重现结果的默认设置。
rng默认的N = 0:999;x = exp (1 j *π/ 4 * n) + 1 j] [1 * randn 2长度(n)) /√(2);
使用fft
获得周期图。由于输入是复值的,从得到周期图
rad /样品。画出结果。
N =长度(x)XDFT = fft(x);psdx = (1/(2*pi*N)) * abs(xdft).^2;freq = 0:(2*pi)/N:2*pi-(2*pi)/N;情节(频率/π,10 * log10 (psdx))网格在标题(“使用FFT的周期图”)包含(归一化频率(\乘以\ π rad/sample)) ylabel (的功率/频率(dB / rad /样本))
使用周期图
获得并绘制周期图。比较PSD估计。
周期图(x, rectwin(长度(x)),长度(x),双侧的)
Mxerr = max(psdx'-periodogram(x,rectwin(length(x))),length(x),双侧的))
Mxerr = 2.8422e-14