在C中乘以矩阵和向量

  • 本文关键字:向量 c arrays 2d malloc
  • 更新时间 :
  • 英文 :


我想乘一个矩阵和向量,我已经编写了将矩阵和向量存储在malloc数组中的函数。对于此功能,我需要使用Malloc创建另一个数组来首先存储答案。然后进行计算(http://www.facstaff.bucknell.edu/mastascu/mastascu/elessonshtml/circuit/matvecmultiply.htm)

#include <stdlib.h>
/* Multiply a matrix by a vector. */
double *matrix_vector_multiply(int rows, int cols,
               double **mat, double *vec){
 // creating an vecotr to hold the answer first
 double *ans= malloc(rows* sizeof(double));
 // do the multiplication:
 mulitply **mat and *vec (mat = the matrix and vec is the vector)
 for (rows=0; rows< ; rows++)
    for (cols=0; cols< ; cols++)
        ans[rows] = ans[rows] + vec[rows][cols] * mat[rows];    
 //not sure if it is right
 // then store the answer back to the ans array            

}

主要功能:

double *matrix_vector_multiply(int rows, int cols,
               double **mat, double *vec);
int main(){
  double *answer = matrix_vector_multiply(rows, cols, matrix, vector);
  printf("Answer vector: n");
  print_vector(rows, answer);
  return 0;
 }

不确定如何用指针进行此乘法,然后将其存储回去。任何帮助,将不胜感激!谢谢!

编辑:乘法函数:

#include <stdlib.h>
/* Multiply a matrix by a vector. */
double *matrix_vector_multiply(int rows, int cols,
               double **mat, double *vec){
double *ans = malloc(rows * sizeof (double));   
int i;  
for (i=0; i<rows; rows++)
    for (i=0; i<cols; cols++)
        ans[rows] = ans[rows] + vec[rows][cols] * mat[rows];    
return ans;            

}

但是我在第12行中遇到错误,订阅值是数组,也不是指针

您的功能中有几个错误:

  1. 通过for循环中的矩阵迭代的变量不应是您传递给函数的参数。尝试这样的东西: for(y=0;y<rows;y++)

  2. 您必须在for loops中交换vecmat

  3. 您必须将答案向量初始化为0(另一个用于循环)

  4. 您必须在乘法结束时返回答案(return ans;

希望有帮助,Jan

相关内容

  • 没有找到相关文章

最新更新