资源简介
将常用矩阵运算(如加、减、乘、逆、转置等)用C语言实现
代码片段和文件信息
#include “Matrix.h“
matrix matrix::Add(matrix &b)//加法运算
{
int ij;
matrix*c=(matrix*)malloc(sizeof(matrix));
for(i=0;i for(j=0;j
c->m[i][j]=m[i][j]+b.m[i][j];
return(*c);
}
float* Add(float* Matrix1int Row1int Col1float* Matrix2int Row2int Col2)//加法运算
{
if(Row1!=Row2||Col1!=Col2)
return 0;
int ijindex;
float*c=(float*)malloc(Row1*Col2*sizeof(float*));
index=0;
for(i=0;i {
for(j=0;j {
c[index]=Matrix1[index]+Matrix2[index];
index++;
}
}
return c;
}
matrix matrix::Sub(matrix &b)//减法运算
{
int ij;
matrix*c=(matrix*)malloc(sizeof(matrix));
for(i=0;i for(j=0;j
c->m[i][j]=m[i][j]-b.m[i][j];
return *c;
}
float* Sub(float* Matrix1int Row1int Col1float* Matrix2int Row2int Col2)//加法运算
{
if(Row1!=Row2||Col1!=Col2)
return 0;
int ijindex;
float*c=(float*)malloc(Row1*Col2*sizeof(float*));
index=0;
for(i=0;i {
for(j=0;j {
c[index]=Matrix1[index]-Matrix2[index];
index++;
}
}
return c;
}
matrix matrix::Mul(matrix &b)//乘法运算
{
int ijk;
double sum=0;
matrix*c=(matrix*)malloc(sizeof(matrix));
for(i=0;i {
for(j=0;j
{
for(k=0;k
sum+=m[i][k]*(b.m[k][j]);
c->m[i][j]=sum;
sum=0;
}
}
return(*c);
}
float* Mul(float* Matrix1int Row1int Col1float* Matrix2int Row2int Col2)//乘法运算
{
if(Col1!=Row2)
return 0;
int ijkindexindex1indextmp1index2indextmp2;
double sum=0;
float*c=(float*)malloc(Row1*Col2*sizeof(float*));
index=0;index1=0;index2=0;
for(i=0;i {
for(j=0;j {
indextmp1=index1;
indextmp2=j;
for(k=0;k {
//sum+=Matrix1[i*Col1+k]*Matrix2[k*Col2+j];
sum+=Matrix1[indextmp1]*Matrix2[indextmp2];
indextmp1++;
indextmp2+=Col2;
}
c[index]=sum;
sum=0;
index++;
//index2++;
}
index1+=Col1;
}
return c;
}
matrix matrix::Div(matrix &b)//除法运算
{
//除法直接求解,参见主函数
matrix c;
return(c);
}
matrix matrix::Inverse()//求逆运算
{
//http://www.cnblogs.com/rollenholt/articles/2050662.html
int ijkM=colN=2*col;
double b[col][col*2];
matrix*c=(matrix*)malloc(sizeof(matrix));
for(i=0;i for(j=0;j b[i][j]=m[i][j];
for(i=0;i for(j=M;j {
if(i==(j-M))
b[i][j]=1;
else
b[i][j]=0;
}
/***************下面进行求逆运算*********/
for(i=0;i {
if(b[i][i]==0)
{
for(k=i;k {
if(b[k][i]!=0) //作者的博客里面此处为b[k][k]貌似是不正确的,//因为这对比如说是{001101011}的矩阵就会判断为不可逆,
{ //而实际上该矩阵是可逆的,这里应该是作者笔误,待进一步求证
for(j=0;j {
double temp;
temp=b[i][j];
b[i][j]=b[k][j];
b[k][j]=temp;
}
break;
}
}
if(k==M)
{
printf(“该矩阵不可逆!\n“);
exit(0);
}
}
for(j=N-1;j>=i;j--)
b[i][j]/=b[i][i];
for(k=0;k {
if(k!=i)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-04-15 20:56 MatrixCalc\
目录 0 2014-01-30 10:50 MatrixCalc\Debug\
文件 24688 2014-01-02 17:44 MatrixCalc\Debug\Matrix.obj
文件 225340 2014-01-02 17:37 MatrixCalc\Debug\MatrixCalc.exe
文件 288620 2014-01-02 17:37 MatrixCalc\Debug\MatrixCalc.ilk
文件 492544 2014-01-02 17:37 MatrixCalc\Debug\MatrixCalc.pdb
文件 41984 2014-01-02 17:44 MatrixCalc\Debug\vc60.idb
文件 53248 2014-01-02 17:44 MatrixCalc\Debug\vc60.pdb
文件 7354 2014-01-02 17:44 MatrixCalc\Matrix.cpp
文件 629 2013-12-31 12:02 MatrixCalc\Matrix.h
文件 4383 2013-12-31 11:49 MatrixCalc\MatrixCalc.dsp
文件 545 2013-12-31 11:41 MatrixCalc\MatrixCalc.dsw
文件 41984 2014-04-15 20:56 MatrixCalc\MatrixCalc.ncb
文件 49664 2014-04-15 20:56 MatrixCalc\MatrixCalc.opt
文件 1024 2014-01-02 17:44 MatrixCalc\MatrixCalc.plg
相关资源
- Yuneec ST24解码器C语言源码
- 最新快速傅里叶计算,C语言的FFT程序
- c语言矩阵运算程序
- 纯C语言实现工资管理系统
- c语言实现获取文件的md5哈希值
- 4X4矩阵键盘+LCD1602显示
- C语言求first集sellect集follow集
- C语言编程规范个人规约
- 51单片机驱动步进电机(含电路图和
- C语言课程设计—运动会管理系统(
- c语言课程设计 简易通讯录 源代码
- 文件系统c语言实现,在linux下编译
- B树 C语言实现
- 湖南大学C语言程序设计考研试题
- 贪心法解决背包问题c语言代码
- linux下用C语言实现寻找1到1亿内的素数
- C语言课程设计--商场商品信息管理系
- C语言课程设计万年历
- linux下C语言实现简易web服务器
- SM2_SM3_SM4_C语言实现+SM3_C++实现+国家密
- 操作系统c语言模拟作业调度实验
- linux下C语言实现读者写者写者优先
- 航空订票系统航空订票系统航空订票
- 图书馆管理系统c语言编写
- 通讯录管理程序设计的C语言实现
- 用C语言编写的井字棋小游戏
- 数据结构c语言版-单链表的操作程序代
- C/C++语言实现求矩阵的广义逆
- 编译原理-简单编译器课程设计C语言源
- 用C语言实现的TCP服务器与客户端源代
评论
共有 条评论