2017-02-22 77 views
-3

我用逻辑回归模型来得到一个公式。因为我把每个小时作为一个因素,所以这个开关箱很长,修改不方便,而且不漂亮。有没有办法简化它?也许我应该尝试使用矩阵进行算术?有什么办法可以让这个C开关盒更简单吗?

... 
#define elif else if 
... 
// hours 
switch (hours) { 
    case 0: 
     prob[2] = prob_base[7]; 
     break; 
    case 1: 
     prob[2] = prob_base[8]; 
     break; 
    case 2: 
     prob[2] = prob_base[9]; 
     break; 
    case 3: 
     prob[2] = prob_base[10]; 
     break; 
    case 4: 
     prob[2] = prob_base[11]; 
     break; 
    case 5: 
     prob[2] = prob_base[12]; 
     break; 
    case 6: 
     prob[2] = prob_base[13]; 
     break; 
    case 7: 
     prob[2] = prob_base[14]; 
     break; 
    case 8: 
     prob[2] = prob_base[15]; 
     break; 
    case 9: 
     prob[2] = prob_base[16]; 
     break; 
    case 10: 
     prob[2] = prob_base[17]; 
     break; 
    case 11: 
     prob[2] = prob_base[18]; 
     break; 
    case 12: 
     prob[2] = prob_base[19]; 
     break; 
    case 13: 
     prob[2] = prob_base[20]; 
     break; 
    case 14: 
     prob[2] = prob_base[21]; 
     break; 
    case 15: 
     prob[2] = prob_base[22]; 
     break; 
    case 16: 
     prob[2] = prob_base[23]; 
     break; 
    case 17: 
     prob[2] = prob_base[24]; 
     break; 
    case 18: 
     prob[2] = prob_base[25]; 
     break; 
    case 19: 
     prob[2] = prob_base[26]; 
     break; 
    case 20: 
     prob[2] = prob_base[27]; 
     break; 
    case 21: 
     prob[2] = prob_base[28]; 
     break; 
    case 22: 
     prob[2] = prob_base[29]; 
     break; 
    case 23: 
     prob[2] = prob_base[30]; 
     break; 
    default: 
     prob[2] = 0; 
     break; 
} 

// bidf 
prob[3] = prob_base[31] * atof(bidf); 

// isp 
switch (isp) { 
    case 1: 
     prob[4] = prob_base[32]; 
     break; 
    case 2: 
     prob[4] = prob_base[33]; 
     break; 
    case 3: 
     prob[4] = prob_base[34]; 
     break; 
    default: 
     prob[4] = 0; 
     break; 
} 
... 
+2

arrx [2] = ARRY第[i + 7] –

+3

也许'概率[2] = prob_base [小时+ 7]'? –

+0

焦虑问题:这应该继续进行代码审查。顺便说一句,他们在C中没有关键字“elif”。 – Stargateur

回答

2

像这样:

if (hours >= 0 && hours < 24) 
    prob[2] = prob_base[hours + 7]; 
else 
    prob[2] = 0; 

prob[3] = prob_base[31] * atof(bidf); 

if (isp >= 1 && isp < 4) 
    prob[4] = prob_base[isp + 31]; 
else 
    prob[4] = 0; 
+0

我明白了,非常感谢你 – Nasy

0
//hours 
prob[2] = prob_base[hours+7];   //no switch required 
+0

非常感谢。 – Nasy

相关问题