Как обрезать амплитуду wav-файла?

Я пытаюсь определить высоту сигнала с помощью функции автокорреляции с функцией отсечения.
У меня возникли проблемы с программированием функции отсечения.

Я пробовал это:

[sig Fs]= wavread('sound.wav');

N = length(sig);

for i=1:N
    if sig > cl
        sigp(i) = sig(i)-cl(i);

    elseif sig < -cl
        sigp(i) = sig(i)+cl(i);
    else
        sigp(i) = 0;
end

Однако, когда я пытаюсь построить обрезанную часть, программа работает медленно и возвращает пустой график.

Есть идеи?


person Sams    schedule 25.04.2014    source источник


Ответы (1)


Вы забыли проиндексировать массив sig в ​​условном выражении. Смотри ниже:

[sig Fs]= wavread('sound.wav');

N = length(sig);

for i=1:N
    if sig(i) > cl
        sigp(i) = sig(i)-cl;
    elseif sig(i) < -cl
        sigp(i) = sig(i)+cl;
    else
        sigp(i) = 0;
end

Дайте мне знать, если это не ответ на ваш вопрос, и я попробую еще раз.

person Justin Fletcher    schedule 25.04.2014
comment
@Самс Отлично! Пожалуйста, не забудьте принять мой ответ, если это то, что вам нужно. Ваше здоровье! - person Justin Fletcher; 26.04.2014