| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2648 人关注过本帖
标题:C语言编写矩阵乘法函数,怎么使用动态内存分配?
取消只看楼主 加入收藏
leizhanzhi
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-5-31
结帖率:33.33%
收藏
已结贴  问题点数:15 回复次数:3 
C语言编写矩阵乘法函数,怎么使用动态内存分配?
想要编写一个可以调用的函数,能实现矩阵的乘法,矩阵的维数不固定,但是可以通过传参传入函数中,传入的参数中包括一个存放结果的矩阵,我使用了宏定义函数编写矩阵乘法,如果不想使用宏定义函数的话,该怎么写?遇到的问题是在定义函数参数时,矩阵的维数不能确定,不知道要怎么处理,动态内存分配也不太清楚应该在何处使用,请前辈指点。
这是我写的宏定义函数实现的矩阵乘法
程序代码:
#include <stdio.h>
#define MATRIX_PRINT(mtx)         matrix_print( sizeof(mtx)/sizeof(*(mtx)), sizeof(*(mtx))/sizeof(**(mtx)), (mtx) )
#define MATRIX_MUT(a,b,c)         matrix_mut(sizeof(a)/sizeof(*(a)),sizeof(*(a))/sizeof(**(a)),sizeof(*(b))/sizeof(**(b)),(a),(b),(c))

void matrix_print( size_t row, size_t col, float mtx[row][col] )
{
    size_t r=0,c=0;
    for(  r=0; r<row; r++)
    {
        for(  c=0; c<col; c++ )
        {
           printf( "%f ", mtx[r][c]);
        }
    }
}

void matrix_mut(size_t row,size_t med,size_t col,float a[row][med],float b[med][col],float c[row][col])
{
  size_t i,j,l;
  for(i=0;i<row;i++)
  {
      for(j=0;j<col;j++)
      {
          float sum=0;
          for(l=0;l<med;l++)
          {
              sum=sum+a[i][l]*b[l][j];
          }
          c[i][j]=sum;
      }
  }
}
int main( void )
{
    float a[2][3] = { {1,2,3}, {1,5,2} };
    float b[3][2]={1,2,2,1,3,1};
    float d[2][2];
    MATRIX_MUT(a,b,d);
    MATRIX_PRINT( d );
    return 0;
}
搜索更多相关主题的帖子: row 函数 矩阵 sizeof float 
2020-06-20 19:49
leizhanzhi
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-5-31
收藏
得分:0 
回复 2楼 rjsp
是的,我描述错了,是二维矩阵的行数和列数不确定
2020-06-21 10:02
leizhanzhi
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-5-31
收藏
得分:0 
回复 3楼 ditg
我想表达的就是,函数能够计算矩阵A和矩阵B的乘法,保存在C矩阵中,矩阵A的列数和矩阵B的行数相同,矩阵A和矩阵B在函数中是不确定的,只有在主函数中给出了才能确定两个矩阵的行数和列数,我想表达的就是这个意思
2020-06-21 10:08
leizhanzhi
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2020-5-31
收藏
得分:0 
回复 7楼 ditg
在主函数中已经知道矩阵的行数和列数还有元素值,不需要用键盘输入,在主函数中计算多个矩阵的相乘,比如说计算4*6的矩阵和6*6的矩阵的乘法,还要计算2*3和3*4 4*4和4*4的矩阵的乘法,想把矩阵乘法的过程写成一个函数,10阶以内矩阵乘法都能计算,可以在主函数中直接调用,不在主函数中写多个矩阵乘法的过程;
2020-06-21 12:23
快速回复:C语言编写矩阵乘法函数,怎么使用动态内存分配?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036663 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved