-1

標準ライブラリabs()から誤った値を取得しています。以下の例では、minとmaxは-18635と3402として正しく評価されていますが、absMaxは3402になるため、18635になるはずです。これでうまくいくのでしょうか、それとも間違いでしたか?

double    NormalizeWaveData(SInt16 *inData, long inlength)
{
    int maxAmp = 0, minAmp=0, absMax=0;
    for(long i=0; i<inlength; i++)
    {
        if( inData[i] > maxAmp)
           maxAmp = inData[i];
        if( inData[i] < minAmp)
           minAmp = inData[i];

        if( abs(inData[i]) > absMax)
           absMax = inData[i];

    }
...
4

1 に答える 1

7

あなたが使用する必要があります

if( abs(inData[i]) > absMax)
       absMax = abs(inData[i]);
于 2013-02-27T11:06:56.637 に答える