矩阵点乘函数c语言 c语言通用矩阵乘法函数

c语言:请编写一个函数,可调用它来计算m*n矩阵与n*m矩阵的积 。主函数为m,n和两个矩阵提供数值 。#includestdio.h
#define maxsize 10
void mul(int x[][maxsize],int y[][maxsize],int z[][maxsize],int r,int c)
{
int i,j,k;
for(i=0;ir;i)
for(j=0;jr;j)
{
z[i][j]=0;
for(k=0;kc;k)
z[i][j] =x[i][k]*y[k][j];
}
}
void main()
{
int m,n,i,j;
int array_a[maxsize][maxsize],array_b[maxsize][maxsize],array_c[maxsize][maxsize],array_d[maxsize][maxsize];
printf("请输入第一个矩阵的行数m(1-%d)和列数n(1-%d):\n",maxsize,maxsize);
scanf("%d %d",m,n);
printf("请输入A矩阵(%d*%d):\n",m,n);
for(i=0;im;i)
for(j=0;jn;j)
scanf("%d",array_a[i][j]);
printf("请输入B矩阵(%d*%d):\n",n,m);
for(i=0;in;i)
for(j=0;jm;j)
scanf("%d",array_b[i][j]);
printf("\nA*B=\n");
mul(array_a,array_b,array_c,m,n);
for(i=0;im;i)
{
for(j=0;jm;j)
printf("%d ",array_c[i][j]);
printf("\n");
}
printf("\nB*A=\n");
mul(array_b,array_a,array_d,n,m);
for(i=0;in;i)
{
for(j=0;jn;j)
printf("%d ",array_d[i][j]);
printf("\n");
}
}
C语言:2X3的矩阵和一个3X4的矩阵的乘积是什么啊?难道是对应下标的数相乘?关键是你想干什么,像你所说的对应下标的数相乘 , 是对应于matlab里面的点乘 。
数学中定义的矩阵的乘法是a行乘b列的和作为结果中下标ab的值 。
c语言 求矩阵a,b的乘积,结果存入矩阵c中并按矩阵形式输出 。矩阵相乘的前提:矩阵a(#include stdio.h
#define M 2
#define P 2
#define N 2
main()
{
int a[M][P]; //定义三个矩阵
int b[P][N];
int c[M][N];
int i,j,k;
printf("input a[M][P]=");
for(i=0;iM;i){ //输入矩阵a的值
for(j=0;jP;j){
【矩阵点乘函数c语言 c语言通用矩阵乘法函数】scanf("%d",a[i][j]);
}
}
printf("input b[P][N]=");
for(i=0;iP;i){ //输入矩阵b的值
for(j=0;jN;j){
scanf("%d",b[i][j]);
}
}
for(i=0;iM;i){ //计算矩阵c的值
for(j=0;jN;j){
c[i][j]=0;
for(k=0;kP;k){
c[i][j] =a[i][k]*b[k][j];
}
}
}
system("cls");//清屏
for(i=0;iM;i){ //输出矩阵c的值
for(j=0;jN;j){
printf("%d ",c[i][j]);
}
printf("\n");
}
getch();
}
程序测试通过!
Copencv有没有类似Matlab中图片点乘、点除的函数?1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName,CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像信息保持了原有图像的信息(包括通道信息和位深信息);
rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通道灰度图;
或用cvCreateImage、cvCvtColor两函数实现图像的灰度化 。
2、matlab中的zeros函数相当于OpenCV中的cvSetZero函数 。
3、matlab中的两矩阵点乘 .* 相当于OpenCV中的cvMul函数 。
4、matlab中的两矩阵点除 ./ 相当于OpenCV中的cvDiv函数 。
5、matlab中的两矩阵相加相当于OpenCV中的cvAdd函数 。
6、matlab中的两矩阵相减 - 相当于OpenCV中的cvSub函数 。
7、matlab中的矩阵和一个常量相加 Aa 相当于OpenCV中的cvAddS函数 cvAdds(matA, cvScalar(a), matB) 。
8、matlab中的矩阵和一个常量相减 A - a 相当于OpenCV中的cvSubS函数 cvSubS(matA, cvScalar(a), matB) 。
9、matlab中的给矩阵赋一初值 A(:, :) = a 相当于OpenCV中的cvSet函数 cvSet(matA, cvScalar(a)) 。
10、matlab中取矩阵某一部分赋给另一矩阵 A = B(i : j, m : n) 相当于OpenCV中的cvGetSubRect 函数,cvGetSubRect(mat1, mat2, rect) 。
11、matlab中取矩阵最大值、最小值 max(max(A))、min(min(A)) 相当于OpenCV中的cvMinMaxLoc函数 cvMinMaxLoc(A, minloc, maxloc) 。
12、matlab中两矩阵相乘 A * B 相当于OpenCV中的cvMatMul函数,cvMatMul(A, B, C) 。
13、matlab中计算两个三维向量的叉积 C = cross(A, B) 相当于OpenCV中的cvCrossProduct函数 , cvCrossProduct(A, B, C) 。
14、matlab中计算向量的范数 c = norm(A) 相当于OpenCV中的cvNorm函数,c = cvNorm(A) 。
15、matlab中求二维矩阵的奇异值分解 [u s v] = svd(A, 0) 相当于OpenCV中的cvSVD函数 cvSVD(A, s, u, v) 。
16、matlab中两矩阵左除 c = a / b 相当于OpenCV中的cvInvert、cvMatMul两函数即:cvInvert(a, d); cvMatMul(d, b, c) 。
17、matlab中的求矩阵的逆inv函数 A = inv(B) 相当于OpenCV中的cvInvert函数:cvInvert(B,A) 。
矩阵点乘函数c语言的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言通用矩阵乘法函数、矩阵点乘函数c语言的信息别忘了在本站进行查找喔 。

    推荐阅读