gpt4 book ai didi

c - 像乘以 2D 矩阵一样乘以 1D 矩阵

转载 作者:行者123 更新时间:2023-11-30 20:10:55 26 4
gpt4 key购买 nike

我正在尝试将一维矩阵乘以 C 中的二维矩阵。以下是我通过 2D 循环得到的结果的一个示例:(+ 应该是我错过输入的 *)

2D matrix multiplication

所以我得到一个矩阵 C,其值

{
{2,3},
{6,11}
};

这是 C 语言中二维数组的代码:

void multiply(int n, double ** a, double ** b, double ** c) {
int i, j, k;
for (i = 1; i < n; i++){
for (j = 1; j < n; j++){
for (k = 1; k < n; k++){
c[i][j] += a[i][k] * b[k][j];
}
}
}
}

现在,我正在尝试做同样的事情,但是对于一维矩阵,如图所示:(+ 应该是我错过输入的 *)

1D matrix multiplication

这是一维数组的代码:

void multiply(int n, double * a, double * b, double * c) {

int i, j, k;

for (i = 0; i < n*n; i++) {
for (j = 0; j < n*n; j++) {
for (k = 0; k < n*n; k++) {
c[i]+= a[j]*b[k];
}
}
}
}

运行后,我得到结果 {14400, 14400,14400,14400} 而不是 {2,3,6,11}

最佳答案

看起来您只想在使用一维数组而不是二维数组时进行矩阵乘法。不知道为什么你想这样做,但你可以这样做:

void multiply(int n, double *a, double *b, double *c) {

int i, j, k;

for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
for (k = 0; k < n; k++) {
c[i * n + j] += a[i * n + k] * b[k * n + j];
}
}
}
}

关于c - 像乘以 2D 矩阵一样乘以 1D 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42750444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com