矩阵转置算法

矩阵转置算法,第1张

for(i=0;i<=n-1;i++)

for(j=i;j<=n-1;j++)

{

temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;

}

这是方阵的

不是方针的你要再定义一个数组,原数组为mn,新数组为nm,然后赋值就行了

#include<stdioh>

void func(int array[4][4])

{

int temp=0;

int i,j;

for(i=0;i<4;i++)

for(j=i+1;j<4;j++)

{

temp=array[i][j];

array[i][j]=array[j][i];

array[j][i]=temp;

}

}

void main()

{

int test[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

int i,j;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

printf("%d  ",test[i][j]);

printf("\n");

}

func(test);

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

printf("%d  ",test[i][j]);

printf("\n");

}

}

扩展资料:

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。

矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。

将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。

关于矩阵相关理论的发展和应用,请参考矩阵理论。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。

参考资料来源:百度百科-转置

1,收先打开Matlab软件,在软件界右侧点击鼠标右键,选择“new file”,点击“script”新建一个文件:

2、在脚本里随意输入一个简单的矩阵,matlab里矩阵转置实现起来比较容易,只需要通过英文的单引号就能实现转置 *** 作:

3、按回车键之后,就可以看到a矩阵转置以后的结果,b矩阵就是转置以后的结果,至此矩阵转换的 *** 作就完成了:

矩阵加法:

#include "stdioh"

#define M 2

#define N 4

void and(int A[M][N],int B[M][N],int C[M][N]);

main()

{

int A[M][N],B[M][N],C[M][N];

int i,j;

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

scanf("%d",&A[i][j]);

}

}

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

scanf("%d",&B[i][j]);

}

}

and(A,B,C);

printf("A=");

printf("\n");

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

printf("%3d",A[i][j]);

}

printf("\n");

}

printf("B=");

printf("\n");

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

printf("%3d",B[i][j]);

}

printf("\n");

}

printf("A+B=");

printf("\n");

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

printf("%3d",C[i][j]);

}

printf("\n");

}

}

void and(int A[M][N],int B[M][N],int C[M][N])

{

int i,j;

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

C[i][j]=A[i][j]+B[i][j];

}

}

}

矩阵乘法:

#include "stdioh"

#define M 2

#define N 4

#define K 3

void multiple(int A[M][N],int B[N][K],int D[M][K]);

main()

{

int A[M][N],B[N][K],D[M][K];

int i,j;

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

scanf("%d",&A[i][j]);

}

}

for(i=0;i<N;i++)

{

for(j=0;j<K;j++)

{

scanf("%d",&B[i][j]);

}

}

multiple(A,B,D);

printf("A=");

printf("\n");

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

printf("%3d",A[i][j]);

}

printf("\n");

}

printf("B=");

printf("\n");

for(i=0;i<N;i++)

{

for(j=0;j<K;j++)

{

printf("%3d",B[i][j]);

}

printf("\n");

}

printf("AB=");

printf("\n");

for(i=0;i<M;i++)

{

for(j=0;j<K;j++)

{

printf("%3d",D[i][j]);

}

printf("\n");

}

}

void multiple(int A[M][N],int B[N][K],int D[M][K])

{

int i,j,l,temp=0;

for(i=0;i<M;i++)

{

for(j=0;j<K;j++)

{

temp=0;

for(l=0;l<N;l++)

{

temp=temp+A[i][l]B[l][j];

}

D[i][j]=temp;

}

}

}

矩阵转置:

#include "stdioh"

#define M 2

#define N 4

void transpose(int A[M][N],int E[N][M]);

main()

{

int A[M][N],E[N][M];

int i,j;

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

scanf("%d",&A[i][j]);

}

}

transpose(A,E);

printf("A=");

printf("\n");

for(i=0;i<M;i++)

{

for(j=0;j<N;j++)

{

printf("%3d",A[i][j]);

}

printf("\n");

}

printf("AT=");

printf("\n");

for(i=0;i<N;i++)

{

for(j=0;j<M;j++)

{

printf("%3d",E[i][j]);

}

printf("\n");

}

}

void transpose(int A[M][N],int E[N][M])

{

int i,j;

for(i=0;i<N;i++)

{

for(j=0;j<M;j++)

{

E[i][j]=A[j][i];

}

}

}

行列式转置的运算法则:

|A|+|B|和|A+B|一般不相等。

|A|×|B|和|A×B|相等。

还有个规则是:|A'|=|A|。

取行列式后就是一个数,就把它当作一个数就行了。

设矩阵a经过初等行变换之后,化为上三角矩阵b,则a等价于b。

矩阵a'经过初等列变换之后,可化为下三角矩阵c,则a'等价于c。

显然,b的转置矩阵b'=c。

所以,矩阵a与矩阵a的转置矩阵的特征值相同。

性质:

简单地说如果A是两个向量空间之间的线性映射在给定基下面的矩阵,那么A的转置矩阵就是向量空间的对偶空间上的线性映射关于这两组基对应的对偶基(坐标函数)的矩阵,出于方便起见我们假设以下所有向量空间都是n维的。

对于每个两个向量空间空间之间线性映射,存在一个反向的在其对应的对偶空间上的线性映射,我们称之为它的转置映射。

以上就是关于矩阵转置算法全部的内容,包括:矩阵转置算法、编写一个函数转置4*4整数矩阵,在主函数中输入矩阵,调用函数转置, 然后输出、matlab中怎么求矩阵的转置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10114194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存