Matlab求矩阵的逆矩阵的C++代码
2012-06-06 16:38
344 查看
void Inverse_Matrix(double * Ora_Matrix,int m_Image_Rows,int m_Image_Colunms)
{
//求矩阵的逆矩阵
int rows=m_Image_Rows;
int colunms=m_Image_Colunms;
double *Re_Matrix=new double[2*rows*colunms];
for (int i=0;i<rows;i++)
{
for (int j=0;j<colunms;j++)
{
Re_Matrix[i*2*colunms+j]=Ora_Matrix[i*colunms+j];
}
}
for (int i=0;i<rows;i++)
{
//在原始矩阵右侧加入同大小的单位矩阵
for (int j=colunms;j<colunms*2;j++)
{
Re_Matrix[i*2*colunms+j]=(j-i==colunms)?1:0;
}
}
//进行初等变换
for (int i=0;i<rows;i++)
{
if (Re_Matrix[i*2*colunms+i]!=1.0)
{
double tem=Re_Matrix[i*2*colunms+i];
Re_Matrix[i*2*colunms+i]=1.0;
for (int j=i;j<colunms*2;j++)
{
Re_Matrix[i*2*colunms+j]/=tem;
}
}
for (int k=0;k<rows;k++)
{
if (i!=k)
{
double tem=Re_Matrix[k*2*colunms+i];
for (int j=0;j<colunms*2;j++)
{
Re_Matrix[k*2*colunms+j]-=(tem*Re_Matrix[i*2*colunms+j]);
}
}
else continue;
}
}
for (int i=0;i<rows;i++)
{
for (int j=0;j<colunms;j++)
{
Ora_Matrix[i*colunms+j]=Re_Matrix[i*2*colunms+j+colunms];
}
}
delete[] Re_Matrix;
}
{
//求矩阵的逆矩阵
int rows=m_Image_Rows;
int colunms=m_Image_Colunms;
double *Re_Matrix=new double[2*rows*colunms];
for (int i=0;i<rows;i++)
{
for (int j=0;j<colunms;j++)
{
Re_Matrix[i*2*colunms+j]=Ora_Matrix[i*colunms+j];
}
}
for (int i=0;i<rows;i++)
{
//在原始矩阵右侧加入同大小的单位矩阵
for (int j=colunms;j<colunms*2;j++)
{
Re_Matrix[i*2*colunms+j]=(j-i==colunms)?1:0;
}
}
//进行初等变换
for (int i=0;i<rows;i++)
{
if (Re_Matrix[i*2*colunms+i]!=1.0)
{
double tem=Re_Matrix[i*2*colunms+i];
Re_Matrix[i*2*colunms+i]=1.0;
for (int j=i;j<colunms*2;j++)
{
Re_Matrix[i*2*colunms+j]/=tem;
}
}
for (int k=0;k<rows;k++)
{
if (i!=k)
{
double tem=Re_Matrix[k*2*colunms+i];
for (int j=0;j<colunms*2;j++)
{
Re_Matrix[k*2*colunms+j]-=(tem*Re_Matrix[i*2*colunms+j]);
}
}
else continue;
}
}
for (int i=0;i<rows;i++)
{
for (int j=0;j<colunms;j++)
{
Ora_Matrix[i*colunms+j]=Re_Matrix[i*2*colunms+j+colunms];
}
}
delete[] Re_Matrix;
}
相关文章推荐
- 求一般矩阵的逆矩阵C++代码
- Matlab中矩阵的乘法C++代码
- Matlab中导入文本文件中的数据 矩阵合并 以及C++中删除文件操作
- Matlab代码转C++(二) —— mwArray
- c++中进行矩阵运算如何才能比matlab快?
- 卡尔曼滤波简介及其算法实现代码(C++/C/MATLAB)
- 以前写的matlab代码,有部分是从txt导数据到matlab里,还有合并矩阵
- 矩阵相乘-c++代码实现及运行实例结果
- 层次分析法(AHP) 将评判矩阵转化为权重矩阵代码实现 MATLAB
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(二)
- 矩阵相乘C++代码
- 有关线性代数的Matlab代码笔记(4)——生成矩阵,消元矩阵
- 矩阵相乘-c++代码实现及运行实例结果
- C++代码片段——矩阵赋值
- 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
- C++ 求一个矩阵的逆矩阵(星星笔记)
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(四)
- Matlab转c与c++代码
- <zz>matlab程序与C/C++代码混合编程
- Matlab代码转C++(一)