Я загрузил логарифмический развернутый синус (с небольшим увеличением / исчезновением) в Matlab, запустил его через функцию fft и построил график, используя полулог.
Амплитуда входного сигнала практически постоянна в диапазоне 10 ... 20000 Гц. Поэтому для более точного представления происходящего я хотел бы видеть график почти горизонтальной линией.
Какую формулу следует применять, чтобы график AFR был горизонтальным?
Сценарий Matlab, который я использовал для построения графика:
fid = fopen('sweepfaded.raw','rb'); %open file
data = fread(fid, inf, 'float32'); %read in the data
fclose(fid); %close file
n = size(data,1);
n = 2^nextpow2(n); % Next power of 2 from length of audio - 2-powers are faster to calculate
p = fft(data, n); % take the fourier transform
nUniquePts = ceil((n+1)/2);
p = p(1:nUniquePts); % select just the first half since the second half
% is a mirror image of the first
p = abs(p); % take the absolute value, or the magnitude
p = p/n; % scale by the number of points so that
% the magnitude does not depend on the length
% of the signal or on its sampling frequency
p = p.^2; % square it to get the power
sampFreq = 44100;
freqArray = (0:nUniquePts-1) * (sampFreq / n); % create the frequency array
semilogx(freqArray, 10*log10(p))
xlabel('Frequency (Hz)')
ylabel('Power (dB)')
Результирующий график, который я хотел бы сделать горизонтальным (например, применить к нему некоторое вращение, чтобы диапазон 100 ... 10000 Гц стал горизонтальной линией):

P.S. Я не очень хорош в обработке аудиосигналов, я просто программист, поэтому не тратьте свое время, пытаясь объяснить, что происходит (хотя, думаю, когда-нибудь мне все равно придется прочитать хорошую книгу о DSP). Достаточно правильной формулы для вставки в мой скрипт Matlab.