2016-03-06 150 views
0

[1]在C中的3x3 2d矩陣相乘

什麼是計算這個方程的最好方法?這是我的嘗試,我爲[out] [2]和out [3]找到了正確的答案,但我確信有這樣做的更好的方法。我試圖結構,但沒有任何運氣。數據類型對於負數是否正確?並且當它們相加和相乘時它們會被傳遞到輸出嗎?

感謝您的任何建議!

int main() { 
int i, j; 
int array[i][j]; 

array[1][1]= 257; array[1][2]= 504; array[1][3]= 98; 
array[2][1]= -148; array[2][2]= -291; array[2][3]= 439; 
array[3][1]= 439; array[3][2]= 368; array[3][3]= 71; 



int input[3]; 

float R=0.2, G=2, B=5; 

input[2]=R; 
input[2]=G; 
input[3]=B; 


float tot[3]; 

tot[2]=input[2]*array[1][1] + input[2]*array[1][2] + input[3]*array[1][3]; 
tot[2]=input[2]*array[2][1] + input[2]*array[2][2] + input[3]*array[2][3]; 
tot[3]=input[2]*array[3][1] + input[2]*array[3][2] + input[3]*array[3][3]; 



int add[3]; 

add[2]=16; 
add[2]=128; 
add[3]=128; 


float out[3]; 

out[2]=add[2]+tot[2]; 
out[2]=add[2]+tot[2]; 
out[3]=add[3]+tot[3]; 

int z; 
for (z = 0; z < 3; z++) 
{ 
     printf("\nout[z] = %f", out[z]); 
} 

return 0; 
} 

回答

0

什麼是計算這個公式的最佳方式?

取決於你想解決的方程。也許你想在你試圖提供的鏈接中發佈方程。如果你更正了鏈接,有人可能會告訴你。

數據類型對於負數是否正確?

總之:你可以使用int。但是:也許你讀了更多關於c中的數據類型和整數與無符號整數之間的差異。你也聲明「輸入[]」爲int,但分配浮點數。

我有點得到了正確的答案[2]進出[3]

訪問用兩次你所有的陣列[2]。

input[2]=R; 
input[2]=G; 
input[3]=B; 

假設你的數組訪問從1開始,你應該做的

input[1]=R; 
input[2]=G; 
input[3]=B; 

順便說我的研究結果修正數組的索引值後:

1565.4 
1445.0 
3937.0