Bagaimana cara memotong amplitudo file wav?

Saya mencoba mendeteksi nada sinyal dengan menggunakan fungsi korelasi otomatis dengan fungsi kliping.
Saya mengalami masalah saat mengkode fungsi kliping.

Saya mencoba ini:

[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

Namun, ketika saya mencoba memplot bagian yang terpotong, programnya lambat, dan mengembalikan plot kosong.

Ada ide?


person Sams    schedule 25.04.2014    source sumber


Jawaban (1)


Anda lupa mengindeks array sig dalam pernyataan kondisional. Lihat di bawah:

[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

Beri tahu saya jika ini tidak menjawab pertanyaan Anda, dan saya akan mencobanya lagi.

person Justin Fletcher    schedule 25.04.2014
comment
@Sam Hebat! Tolong jangan lupa untuk menerima jawaban saya, jika itu yang Anda butuhkan. Bersulang! - person Justin Fletcher; 26.04.2014