2013-09-14 6 views
1

Мне нужна помощь в поиске максимальной амплитуды сигнала БПФ.Максимальная амплитуда данных FFT

Скажем, я выполняю БПФ в аудиофайле и получаю столбец с комплексными числами, как я могу извлечь максимальную амплитуду и ее индекс из сигнала БПФ? Я пробовал использовать синтаксис «max», но я получаю сообщение об ошибке: ??? Индексы индексов должны быть либо натуральными целыми числами, либо логическими.

Оценил помощь .. Thanx

Это код, который я использовал

[wave,fs]=wavread('c scale fast.wav'); % read file into memory */ 
%sound(wave,fs); % see what it sounds like */ 
t=0:1/fs:(length(wave)-1)/fs; % and get sampling frequency */ 


figure(90); 
      subplot(2,1,1) 
      %plot(t,wave) 
      plot(t,abs(wave)) 
      title('Wave File') 
      ylabel('Amplitude') 
      xlabel('Length (in seconds)') 


L = length(wave); 
NFFT = 2^nextpow2(L); % Next power of 2 from length of y 
Y = fft(wave,NFFT)/L; 
f = fs/2*linspace(0,1,NFFT/2+1); 


% Plot single-sided amplitude spectrum. 
     subplot(2,1,2) 
     plot(f,2*abs(Y(1:NFFT/2+1))) 
     title('Single-Sided Amplitude Spectrum of y(t)') 
     xlabel('Frequency (Hz)') 
     ylabel('|Y(f)|') 

A = max(Y) 
+0

Какое сообщение об ошибке вы получаете? –

+0

это ошибка = «Индексы индексов должны быть либо реальными целыми положительными, либо логическими». – user2482542

+0

Вы можете построить данные wav? –

ответ

1

БПФ возвращает комплексное число. Вы должны использовать абсолютное значение, чтобы найти максимум:

[maxY,indexOfMaxY] = max(abs(Y)); 
Смежные вопросы