我正在尝试构建一个健壮的矩阵*矢量计算函数(MatVec),该函数需要我传递一个2d方阵A和一个n为行数或列数的1d数组V。这里有两件事:
我不知道如何使此函数返回向量X,而主函数要获取该向量以便以后使用。
另一件事是,我不想将具有已知列号的矩阵(如arr [] [3])作为参数传递给函数,以使其更加健壮。
在这种情况下,任何想法都将得到深深的赞赏。
int *MatVec(int *A,int V[],int n)
{
int C[n];
for(int i = 0; i<n;i++)
{
C[i] = innerprod(*(A+i*n),V,n);
}
return C;
}
int innerprod(int v[], int u[],int n)
{
double result = 0.0;
for (int i = 0; i < n; i++)
{
result += v[i]*u[i];
//printf("%d\n",v[i]*u[i]);
}
return result;
}
int main()
{
int n = 2;
int C[n];
int A[2][2] = {{1,2},{3,4}};
int V[2] = {3,4};
int W[2] = {7,-2};
int *c = MatVec((int *)A,V,n);
for(int i = 0; i < n ;i++)
{
printf("%d\n",*(c+i));
}
}