如何应用矩阵????急!!!!!!!

friends1979 2003-11-28 03:28:50
看书上写了一个矩阵类class Matrix
头文件: #include "Matrix.h"
在C++下用 matrix <long, double> p(4,4)可以用

在VC6.0下
头文件: #include "Matrix.h"
但是在VC6。0下编译不通应如何使用

...全文
123 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
friends1979 2003-12-03
  • 打赏
  • 举报
回复
我用另外的方法解决了谢谢!!!
saibeifeng 2003-11-29
  • 打赏
  • 举报
回复
我也有同样的问题,有楼上的那条语句。
程序见http://expert.csdn.net/Expert/topic/2508/2508011.xml?temp=.9026453
拜托高手!!
keiven 2003-11-28
  • 打赏
  • 举报
回复
检查该文件头部有没有#include "stdafx.h"语句,没有的话添加。
carbon107 2003-11-28
  • 打赏
  • 举报
回复
在吗,联系我吧qq:373965 msn:carbon107@hotmail.com
我帮你
不是美女我也帮
friends1979 2003-11-28
  • 打赏
  • 举报
回复
贴漏了,有分号,程序一加上matrix.h头文件,就出错。
carbon107 2003-11-28
  • 打赏
  • 举报
回复
???为什么不说话了啊
carbon107 2003-11-28
  • 打赏
  • 举报
回复
class matrix //矩阵类matrix
{
typedef matrix<_Ty> _Myt;

private:
std::valarray<_Ty> m_Datas; //定义一维数组对象m_Datas

size_t m_stRow; //矩阵行数变量
size_t m_stCol; //矩阵列数变量

public:
typedef _Ty value_type;
...........

typedef matrix<float> matrixf;
typedef matrix<double> matrixd;
typedef matrix<long double> matrixld;

........
}//这个地方是不是少了个分号???
hardstudylulin 2003-11-28
  • 打赏
  • 举报
回复
学习!
friends1979 2003-11-28
  • 打赏
  • 举报
回复
error C2065: 'matrix' : undeclared identifier
carbon107 2003-11-28
  • 打赏
  • 举报
回复
编译时的错误是什么
friends1979 2003-11-28
  • 打赏
  • 举报
回复
以下是在VC6.0下编译

#include <iostream>
#include "Matrix.h"
using namespace std;

#include <math.h>

.......

void CCReceCommDlg::ProcessData(int length,unsigned char buf*)
{
。。。。。。。

const double T=0.2;
const double t_ax=1;
const double tx=0.5;
long double s = 0.0;
long double f1[4][4]=
{
{1.0,T,T*T/2,0.0},{0.0,1.0,T,0.0},{0.0,0.0,1.0,0.0},{0.0,0.0,0.0,exp(-T/tx)}
};
long double f[4][4]=
{
{1.0,T,(T/t_ax-1+exp(-T/t_ax))*t_ax*t_ax,0.0},{0.0,1.0,(1-exp(-T/t_ax))*t_ax,0.0},{0.0,0.0,exp(-T/t_ax),0.0},{0.0,0.0,0.0,exp(-T/tx)}
};
long double q[4][4]=
{
{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0}
};
long double eye[4][4]=
{
{1.0,0.0,0.0,0.0},{0.0,1.0,0.0,0.0},{0.0,0.0,1.0,0.0},{0.0,0.0,0.0,1.0}
};
long double r[1][1]={4.5};
long double h[1][4]={1.0,0.0,0.0,1.0};

matrix <long double> pp(4,4);
matrix <long double> pp1(4,4);
matrix <long double> xx(4,1);
matrix <long double> xx1(4,1);
matrix <long double> gg(4,1);
matrix <long double> fft(4,4);
matrix <long double> hht(4,1);

。。。。。。。。

}

error C2065: 'matrix' : undeclared identifier

以下是matrix.h头文件(部分)

#ifndef _MATRIX_H //避免多次编译
#define _MATRIX_H

#include <valarray> //模板类valarray的标准头文件
#include <comm.h> //公共头文件
#include <math.h> //数学头文件

template <class _Ty>
class matrix //矩阵类matrix
{
typedef matrix<_Ty> _Myt;

private:
std::valarray<_Ty> m_Datas; //定义一维数组对象m_Datas

size_t m_stRow; //矩阵行数变量
size_t m_stCol; //矩阵列数变量

public:
typedef _Ty value_type;
...........

typedef matrix<float> matrixf;
typedef matrix<double> matrixd;
typedef matrix<long double> matrixld;

........
}

以下在C++中正常应用

#include <iostream>
#include "Matrix.h"
using namespace std;

void main()
{
const double t_ax=1;
const double tx=0.5;
const double T=0.2;
long double s = 0.0;
long double f1[4][4]=
{
{1.0,T,T*T/2,0.0},{0.0,1.0,T,0.0},{0.0,0.0,1.0,0.0},{0.0,0.0,0.0,exp(-T/tx)}
};

long double f[4][4]=
{
{1.0,T,(T/t_ax-1+exp(-T/t_ax))*t_ax*t_ax,0.0},{0.0,1.0,(1-exp(-T/t_ax))*t_ax,0.0},{0.0,0.0,exp(-T/t_ax),0.0},{0.0,0.0,0.0,exp(-T/tx)}
};

long double q[4][4]=
{
{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0}
};
long double eye[4][4]=
{
{1.0,0.0,0.0,0.0},{0.0,1.0,0.0,0.0},{0.0,0.0,1.0,0.0},{0.0,0.0,0.0,1.0}
};
long double r[1][1]={4.5};
long double h[1][4]={1.0,0.0,0.0,1.0};
long double data[10][1]={39153.43,39348.793,39541.08,39740.674,39936.208,40132.354,40328.09,40523.831,40719.298,40915.248};


matrix<long double>pp(4,4),pp1(4,4),xx(4,1),xx1(4,1),gg(4,1);
matrix<long double>fft(4,4),hht(4,1);
matrix<long double>yy(&data[0][0],10,1);

yy=0.3*yy;
for (int i=0;i<4;i++)
for(int j=0;j<4;j++)
pp(i,j) =0;
for( i=0;i<4;i++)
xx(i,0) =0;
xx(0,0)=yy(0,0);xx(1,0)=(yy(1,0)-yy(0,0))/T;
matrix<long double>ff(&f[0][0],4,4),ff1(&f1[0][0],4,4),qq(&q[0][0],4,4);
matrix<long double>rr(&r[0][0],1,1),hh(&h[0][0],1,4),eyem(&eye[0][0],4,4);
for (i=0; i<10; i++)
{
long double t = 0.2*i;
cout<<t;
cout.precision(10);
cout.width(15);
cout<<yy(i,0);
cout.width(15);
cout<<xx(0,0);
cout.width(20);
cout<<xx(1,0);
cout.width(20);
cout<<xx(2,0);
cout<<endl;
xx1=ff1*xx;
MatrixTranspose(ff,fft);
pp1=ff*pp*fft+qq;
MatrixTranspose(hh,hht);
//gg=pp1*hht*MatrixInversionGS(hh*pp1*hht+rr);
s=(hh*pp1*hht+rr)(0,0);
gg=pp1*hht*1/s;
pp=(eyem-gg*hh)*pp1;
xx=xx1+gg*(yy(i,0)-hh*xx1);


}
}
神功智能 2003-11-28
  • 打赏
  • 举报
回复
STL中没有matrix类的,怎么个不通过法,显示的错误具体怎么说??
sproll 2003-11-28
  • 打赏
  • 举报
回复
建议你还是用STL吧……
carbon107 2003-11-28
  • 打赏
  • 举报
回复
代码贴出来看看,这样说不清楚的

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧