传递2D矩阵和向量-鲁棒矩阵*向量计算功能

时间:2019-03-22 00:56:56

标签: c arrays function matrix 2d

我正在尝试构建一个健壮的矩阵*矢量计算函数(MatVec),该函数需要我传递一个2d方阵A和一个n为行数或列数的1d数组V。这里有两件事:

  1. 我不知道如何使此函数返回向量X,而主函数要获取该向量以便以后使用。

  2. 另一件事是,我不想将具有已知列号的矩阵(如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));
    }
}

0 个答案:

没有答案