2017-02-22 82 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

相關問題