จะตัดความกว้างของไฟล์ 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