我使用wavread加载.wav文件。在实际语音开始之前,我的语音信号以一些非零常数值开始,例如1。我试图将这些值重置为0,直到我的数组y中的值开始变化。我怎么能这样做?
答案 0 :(得分:1)
假设值为常量* ,您可以执行以下操作:
y = wavread(filename)
y(1:find(y~=y(1))-1) = 0;
举例说明:
y =
1 1 1 6 5 9 9 3 1 2
y(1:find(y~=y(1))-1) = 0
y =
0 0 0 6 5 9 9 3 1 2
*如果它不是绝对不变的(非常小的差异),你可以这样做:
y(1:find(abs(y-y(1))>1e-6)-1) = 0
答案 1 :(得分:0)
如果你的文件是1D,你可以试试这个,
y = wavread(filename);
y(cumsum(diff(y)) == 0 ) = 0;
y(1) = 0;