如何在C中编写一个函数来对两个向量进行叉积
How to write a function to do cross product of two vectors in C
我正在用 C 编写一个函数,它接受两个向量 v1 和 v3,然后执行向量乘以向量乘法来创建矩阵。
v1 是 1xL1 向量,v3 是 1xL2 向量。该方法采用 v3 乘以 v1 的转置并打印矩阵。这是我目前所拥有的:
void crossProduct(float *v1, float *v3, int L1, int L2){
int i, j;
float sum;
float c[L2][L1];
for(i = 0; i < L2; i++){
for(j = 0; j < L1; j++){
sum = 0.0;
sum += v3[i] * v1[j];
c[i][j] = sum;
printf("%d", c[i][j]);
}
}
}
我没有得到预期的结果。我也想矩阵打印矩阵形式,但我不知道如何。
您需要对浮点数使用 %f
格式,而不是 %d
。
要获得可读数组,请在每个值后放置一个 space,并在每行后放置一个换行符。
void crossProduct(float *v1, float *v3, int L1, int L2){
int i, j;
float sum;
float c[L2][L1];
for(i = 0; i < L2; i++){
for(j = 0; j < L1; j++){
sum = 0.0;
sum += v3[i] * v1[j];
c[i][j] = sum;
printf("%f ", c[i][j]);
}
printf("\n");
}
}
我正在用 C 编写一个函数,它接受两个向量 v1 和 v3,然后执行向量乘以向量乘法来创建矩阵。 v1 是 1xL1 向量,v3 是 1xL2 向量。该方法采用 v3 乘以 v1 的转置并打印矩阵。这是我目前所拥有的:
void crossProduct(float *v1, float *v3, int L1, int L2){
int i, j;
float sum;
float c[L2][L1];
for(i = 0; i < L2; i++){
for(j = 0; j < L1; j++){
sum = 0.0;
sum += v3[i] * v1[j];
c[i][j] = sum;
printf("%d", c[i][j]);
}
}
}
我没有得到预期的结果。我也想矩阵打印矩阵形式,但我不知道如何。
您需要对浮点数使用 %f
格式,而不是 %d
。
要获得可读数组,请在每个值后放置一个 space,并在每行后放置一个换行符。
void crossProduct(float *v1, float *v3, int L1, int L2){
int i, j;
float sum;
float c[L2][L1];
for(i = 0; i < L2; i++){
for(j = 0; j < L1; j++){
sum = 0.0;
sum += v3[i] * v1[j];
c[i][j] = sum;
printf("%f ", c[i][j]);
}
printf("\n");
}
}