C中的3x3 2d矩阵乘法

时间:2016-03-06 23:58:38

标签: matrix multidimensional-array formula multiplication

[在此处输入图像说明] [1]

计算此等式的最佳方法是什么?这是我的尝试,我为[2]和[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;
}

1 个答案:

答案 0 :(得分:0)

  

计算这个等式的最佳方法是什么?

取决于您想要解决的等式。也许您想在您尝试提供的链接中发布等式。如果你更正了链接,有人可能会告诉你。

  

数字类型对于负数是否正确?

简而言之:你可以使用int。但是:也许你读了更多关于c中的数据类型以及整数和无符号整数之间的差异。您还将“input []”声明为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