资源简介
将常用矩阵运算(如加、减、乘、逆、转置等)用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
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论