Да, после БПФ, единица оси ординат по-прежнему будет вольт.Вы можете масштабировать его путем деления на количество выборок вашего сигнала, тогда вы действительно можете умножить на два (кроме первого и последнего элементов, которые представляют соответственно частоту 0
и Fs/2
), если вы хотите построить весь спектрв положительную сторону.
Тогда, если вы хотите построить в дБ, вы можете использовать функцию mag2db
, которая применяет формулу, которую вы сказали.
Я нашелнекоторые странности в вашем коде, поэтому я предлагаю некоторые исправления.Мой сигнал Timedomain
представляет собой синус 100 кГц при 1 В.
Fs = 500000; % sampling frequency
L = 2500; % length of the signal
t = (0:L-1)/Fs; % time domain array
f = linspace(0, Fs/2, L/2+1); % frequency domain array
Timedomain = cos(2*pi*100000*t); % Input signal
FFT = abs(fft(Timedomain)/L);
FFT(2:L/2) = 2*FFT(2:L/2);
%% Plots
subplot(2,1,1);
plot(f, FFT(1:L/2+1)); xlabel('Frequency (Hz)'); ylabel('Tension (V)');
subplot(2,1,2);
plot(f, mag2db(FFT(1:L/2+1))); xlabel('Frequency (Hz)'); ylabel('Tension (dBV)');
Это возвращает: