关于Borland C++ Builder 奇怪的问题
用Borland C++ Builder 6 用了两年了,一直有很奇怪的情况发生。之前的先不说了,就说这两天发生的情况
我是做audio coding的,想通过filter把输入信号变小。问题来了,有的时候滤波之后的信号是变小的,有的时候不是。我就在查,然后发现:在文件开头,
#define N 2048 /* frame shift */
#define W N+1024 /* frame size */
这样写,滤波之后信号energy变小
#define N 2048 /* frame shift */
#define W 3072 /* frame size */
这样写,滤波之后信号energy变大
其他地方都没有改,请问这个是Borland C++ Builder 6的问题,还是我程序写的时候有问题?我不知道为什么我写的程序会跟预定义的W的值有关系
再有就是,在后面的程序里,如果我写
for (j=0;j<W-NN;j++)
winbuf[j]=winbuf[NN+j];
for (j=W-NN;j<W;j++)
winbuf[j]=nbuf[(W-N)/2+subframe+j-W+NN];
滤波之后信号energy变小,
如果写
for (j=0;j<N-NN+1024;j++)
winbuf[j]=winbuf[NN+j];
for (j=N-NN+1024;j<N+1024;j++)
winbuf[j]=nbuf[(W-N)/2+subframe+j+NN-N-1024];
滤波之后信号energy变大
如果把上面的改成
for (j=0;j<N-NN+1024;j++)
winbuf[j]=winbuf[NN+j];
for (j=N-NN+1024;j<N+1024;j++)
winbuf[j]=nbuf[(W-N)/2+subframe+j+NN-W];
滤波之后信号energy变小,
再如果把上面的改成
for (j=0;j<N-NN+1024;j++)
winbuf[j]=winbuf[NN+j];
for (j=N-NN+1024;j<N+1024;j++)
winbuf[j]=nbuf[(W-N)/2+subframe+j+NN-(W)];
滤波之后信号energy变大
包括之前遇到过一些问题,更改文件名或者某个函数名以后,就解决了。。。
到底是为什么呢,请教各位大虾了!!!