2012-10-04 2 views
-2

이것은 문제의 원인입니다. 나는 정말로 ok가 아닌 것을 찾을 수 없다. 이 부분은 프런트 엔드 구성을위한 멜빈 기능을위한 것입니다.내 C 프로그램의 부동 소수점 예외

원본 문서는 사전에 어떤 도움 http://www.ee.columbia.edu/~stanchen/fall12/e6870/labs/lab1.html

감사에있다!

double fmax = 0; 
double w = 0;  // half of the length of the bottom line of each bin of triangular 

fmax = 1127*log(1+1/(1400*samplePeriod)); 
w = fmax/27; 

double f = 0; 
double fmel = 0; 
double xf = 0; 
double H = 0; 
double sum = 0; 

for (int frmIdx = 0; frmIdx < inFrameCnt; ++frmIdx) 
    for (int dimIdx = 0; dimIdx < outDimCnt; ++dimIdx){ 
     sum = 0; 
     for (int j = 0; j < 256; ++j){ 
      f = j/(256/20000); 
      fmel = 1127*log(1+f/700); 
      xf = sqrt(inFeats(frmIdx,2*j)*inFeats(frmIdx,2*j)+inFeats(frmIdx,2*j+1)*inFeats(frmIdx,2*j+1)); 
      if (fmel > dimIdx*w && fmel < (dimIdx+1)*w){ 
       H = (fmel- dimIdx*w)/w; 
      } 
      else if(fmel > ((dimIdx+1)*w) && fmel < ((dimIdx+2)*w)){ 
       H = ((dimIdx+2)*w-fmel)/w; 
      } 
      else { 
       H = 0; 
      } 
      sum = sum + xf*H; 
     } 
     outFeats(frmIdx,dimIdx)=sum; 

     if (doLog == true){ 
      outFeats(frmIdx,dimIdx) = log(outFeats(frmIdx,dimIdx)); 
     } 
     else{ 
      outFeats(frmIdx,dimIdx) = outFeats(frmIdx,dimIdx); 
     } 
    } 
+0

......... 어디서? –

+0

어디서 무엇을 의미합니까? – Yaozhong

+0

@Yazohong 예외가 발생한 곳을 의미합니까? –

답변

1

0으로 나눈 값이 없는지 확인하십시오.
이것은 정의에 따라 처음으로 0입니다.
f = j/(256/20000); // (256 및 20000은 정수로 처리됩니다.)
256/20000 (또는 256.0/20000.0)은 float을 만듭니다.

+0

awesome! f = j/(256.0/20000.0)로 변경하여 고정했습니다. – Yaozhong