2016-03-16 2 views
-3

У меня есть 2 .wav-файлы, которые были записаны на частоте. Один из них является оригинальным, а другой - фильтрованным. Оба являются стерео .wav-файлами.MATLAB - Поиск пиков и долин

Прямо сейчас, я должен найти пики и долины этих файлов .wav. Мне сказали, что я должен взять 3 последовательных данных и определить, какой из 3 является максимальным или мин. Если средний - это максимум или мин, то пик/долина найден. Повторяйте это, пока не будет больше данных.

Как достичь вышеуказанного?

Мне сказали сделать скользящее окно размером 3 и принять 3 балла на 3 балла.

Я googled, но не смог найти, как начать. Может ли кто-нибудь помочь, пожалуйста. Спасибо!

ответ

1

сначала вы должны сделать ваши аудио файлы в одном канале, это может быть легко сделано:

a = audioread('filename'); 
b = sum(a,1)./2; 

Далее вы можете разделить его на кадры из 3 - это может быть легко достигнуто «перекроить» или возможно, проще для вас, просто использовать цикл:

reshapemethod = reshape(b,[floor(size(b,2)/3),3]) 

или петли:

for t=1:floor(size(b,2)/3) 
    firstpoint = b((t-1)*3+1); 
    secondpoint = b(firstpoint+1); 
    thirdpoint = b(firstpoint+2) 
    %//Use if statement to compare 
    %//OR just do 
    [peaks(t) locationOfPeaks(t)]= findpeaks([firstpoint,secondpoint,thirdpoint]); 
    %//For Valleys, just multiply first second and third point by -1 and then use the findpeaks function. 
    [vallys(t) locationOfValleys(t)] = findpeaks([-1*firstpoint,-1*secondpoint,-1*thirdpoint]); 
end 

следующий год ou может использовать findpeaks, чтобы найти пики в трех точках данных или просто сравнить их с помощью предложения if, это так просто, поэтому я оставляю его для вас.

Смежные вопросы