ある1次元配列の半値幅を求める関数を参考書で読みました。
17行目と24行目の'?'の役割が分かりません。
演算子かもしれないと思ったが、見つけられませんでした。
教えていただけませんか?
C
1double fwxm_lsf(float *p, int nx, double rt) 2{ 3 int i, mx; 4 double max, dx, fw0, fw1, hv; 5 6 max = p[0]; 7 for(i = 1 ; i < nx ; i++) { // 最大値とその座標の算出 8 if((double)p[i] > max) { 9 max = p[i]; 10 mx = i; 11 } 12 } 13 14 hv = max*rt; // 割合をかけた値の算出 15 16 for(i = mx ; (double)p[i] > hv && i > 0 ; i--); 17 dx = (p[i+1] == p[i]? 0.5 : (hv-p[i])/(p[i+1]-p[i])); 18 fw0 = i+dx; // 最大値から左側の幅 19 20// fprintf( stderr," max*%f=%8.1f,", rt, hv); 21// fprintf( stderr," p[%3d]=%8.1f, p[%3d]=%8.1f, fw0=%8.3f\n", i, p[i], i+1, p[i+1], fw0); 22 23 for(i = mx ; (double)p[i] > hv && i < nx-1 ; i++); 24 dx = (p[i-1] == p[i]? 0.5 : (p[i-1]-hv)/(p[i-1]-p[i])); 25 fw1 = i-1+dx; // 最大値から右側の幅 26 27// fprintf( stderr," max*%f=%8.1f,", rt, hv); 28// fprintf( stderr," p[%3d]=%8.1f, p[%3d]=%8.1f, fw1=%8.3f\n", i, p[i-1], i+1, p[i], fw1); 29 30 return fw1-fw0; 31}
回答2件
あなたの回答
tips
プレビュー