FFT与信号波形幅值和能量的关系,FFT处理增益与FFT点数的关系

FFT与信号波形幅值的关系:
A m p = m a x ( a b s ( f f t ( x ) ) ⋅ 2 / l e n g t h ( x ) ) Amp = max(abs(fft(x))\cdot 2/length(x)) Amp=max(abs(fft(x))2/length(x))
FFT与信号能量的关系:
P o w e r = m a x ( a b s ( f f t ( x ) ) / F s ) Power= max(abs(fft(x))/Fs) Power=max(abs(fft(x))/Fs)
FFT处理增益与FFT点数的关系:
p r o c e s s g a i n = 10 ⋅ l o g 10 ( n f f t / 2 ) process_gain = 10\cdot log_{10}(nfft/2) processgain=10log10(nfft/2)

%% created by hyacinth on 24/5/6
clc
close all
clear
%%
Amp = 5; Fx = 10; Fs = 2e3; tend = 1;
t = 1/Fs:1/Fs:tend;

x = Amp*sin(2*pi*Fx*t);

f = @(t) Amp*sin(2*pi*Fx*t).^2;
power = integral(f,1/Fs,tend);
disp("信号能量为: "+num2str(power))
%% 证明FFT与信号幅值和能量的关系
% FFT点数需大于等于信号点数,否则计算出来的是真实值的(fft point)/(signal point)
N = 1*length(x);
signalAmp= abs(fftshift(fft(x,N)))*2/length(x);
signalPower= abs(fftshift(fft(x,N)))/Fs;
w = (floor(-N/2):floor(N/2)-1)*Fs/N;
figure;
subplot(2,1,1);plot(w,signalAmp,'.-');title("FFT与信号幅值")
subplot(2,1,2);plot(w,signalPower,'.-');title("FFT与信号能量")
%% 证明FFT处理增益为10log10((fft point)/2)
% 只有FFT点数小于等于信号点数时才有这个关系
N = 1*length(x);
snr = 10;
xn = addwgn(x,snr); % addwgn是我写的函数,更精确,可用awgn代替
Pxx = abs(fftshift(fft(xn,N)))/Fs;
w = (floor(-N/2):floor(N/2)-1)*Fs/N;
figure;
plot(w,Pxx,'.-');title("添加噪声后信号的FFT")

idx = find(Pxx==max(Pxx));
idx1 = idx(1);
idx2 = idx(2);
% sigPowerdB
sig=Pxx([idx1,idx2]);
sigPower = sum(abs(sig(:)).^2)/length(sig(:));
sigPowerdB = 10*log10(sigPower);
% noisePowerdB
Pxx(idx1)=0;Pxx(idx2)=0;
noisePower = sum(abs(Pxx(:)).^2)/(length(Pxx(:))-2);
noisePowerdB=10*log10(noisePower);

disp("理论处理增益: "+num2str(10*log10(N/2)))
disp("实际处理增益: "+num2str(sigPowerdB-noisePowerdB-snr))
  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值