📄 线性回归view.cpp
字号:
// 线性回归View.cpp : implementation of the CMyView class
//
#include "stdafx.h"
#include "math.h"
#include "线性回归.h"
#include "Matrix.h"
#include "线性回归Set.h"
#include "线性回归Doc.h"
#include "线性回归View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyView
IMPLEMENT_DYNCREATE(CMyView, CRecordView)
BEGIN_MESSAGE_MAP(CMyView, CRecordView)
//{{AFX_MSG_MAP(CMyView)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyView construction/destruction
CMyView::CMyView()
: CRecordView(CMyView::IDD)
{
//{{AFX_DATA_INIT(CMyView)
m_pSet = NULL;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CMyView::~CMyView()
{
}
void CMyView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyView)
DDX_Control(pDX, IDC_LIST1, m_Record_List);
//}}AFX_DATA_MAP
}
BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CRecordView::PreCreateWindow(cs);
}
void CMyView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_mySet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_Record_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LV_COLUMN h;
h.mask=LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
h.fmt=LVCFMT_CENTER;
h.cx=90;
h.pszText="给煤量";
m_Record_List.InsertColumn(0,&h);
h.pszText="引风量";
m_Record_List.InsertColumn(1,&h);
h.pszText="送风量";
m_Record_List.InsertColumn(2,&h);
h.pszText="蒸汽压力";
m_Record_List.InsertColumn(3,&h);
h.pszText="烟气含氧量";
m_Record_List.InsertColumn(4,&h);
h.pszText="炉膛负压";
m_Record_List.InsertColumn (5,&h);
}
/////////////////////////////////////////////////////////////////////////////
// CMyView printing
BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics
#ifdef _DEBUG
void CMyView::AssertValid() const
{
CRecordView::AssertValid();
}
void CMyView::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyView database support
CRecordset* CMyView::OnGetRecordset()
{
return m_pSet;
}
/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers
void CMyView::OnButton1()
{
// TODO: Add your control notification handler code here
m_pSet->MoveFirst();
CString s;
int i=0;
while (!m_pSet->IsEOF())
{
s.Format("%f",m_pSet->m_column1);
m_Record_List.InsertItem(i,s);
s.Format("%f",m_pSet->m_column2);
m_Record_List.SetItemText(i,1,s);
s.Format("%f",m_pSet->m_column3);
m_Record_List.SetItemText(i,2,s);
s.Format("%f",m_pSet->m_column4);
m_Record_List.SetItemText(i,3,s);
s.Format("%f",m_pSet->m_column5);
m_Record_List.SetItemText(i,4,s);
s.Format("%f",m_pSet->m_column6);
m_pSet->MoveNext();
i++;
}
}
void CMyView::OnButton2()
{
// TODO: Add your control notification handler code here
m_pSet->MoveFirst();
CString s;
int i=0;
while (i<240)
{
x1[i]=m_pSet->m_column1;
x2[i]=m_pSet->m_column2;
x3[i]=m_pSet->m_column3;
y1[i]=m_pSet->m_column4;
y2[i]=m_pSet->m_column5;
y3[i]=m_pSet->m_column6;
m_pSet->MoveNext();
i++;
}
//显示代码,万能的
double q1=y1[6];
double dEdit3;
char cBuffer1[10];
dEdit3=q1;
_gcvt(dEdit3,10,cBuffer1);
MessageBox(cBuffer1);
}
void CMyView::OnButton3()
{
// TODO: Add your control notification handler code here
int i;
int j=0;
/*
for (i=0;i<240;i++)
{ if(fabs(x1[i]-4058.3533)>1000)
{
x1[i]=x1[i+1];
x2[i]=x2[i+1];
x3[i]=x3[i+1];
y1[i]=y1[i+1];
y2[i]=y2[i+1];
y3[i]=y3[i+1];
}
else if (fabs(x2[i]-110.3333)>25)
{
x1[i]=x1[i+1];
x2[i]=x2[i+1];
x3[i]=x3[i+1];
y1[i]=y1[i+1];
y2[i]=y2[i+1];
y3[i]=y3[i+1];
}
else if (fabs(x3[i]-33.3992)>7)
{
x1[i]=x1[i+1];
x2[i]=x2[i+1];
x3[i]=x3[i+1];
y1[i]=y1[i+1];
y2[i]=y2[i+1];
y3[i]=y3[i+1];
}
else if (fabs(y1[i]-9.6303)>0.3)
{
x1[i]=x1[i+1];
x2[i]=x2[i+1];
x3[i]=x3[i+1];
y1[i]=y1[i+1];
y2[i]=y2[i+1];
y3[i]=y3[i+1];
}
else if (fabs(y2[i]-5.9638)>2)
{
x1[i]=x1[i+1];
x2[i]=x2[i+1];
x3[i]=x3[i+1];
y1[i]=y1[i+1];
y2[i]=y2[i+1];
y3[i]=y3[i+1];
}
else if (fabs(-y3[i]-61.5167)>25)
{
x1[i]=x1[i+1];
x2[i]=x2[i+1];
x3[i]=x3[i+1];
y1[i]=y1[i+1];
y2[i]=y2[i+1];
y3[i]=y3[i+1];
}
else
{
x1[i]=x1[i];
x2[i]=x2[i];
x3[i]=x3[i];
y1[i]=y1[i];
y2[i]=y2[i];
y3[i]=y3[i];
j=j+1;
}
}
*/
for (i=0;i<240;i++)
{
matX[i][0]=1;
matX[i][1]=x1[i];
matX[i][2]=x2[i];
matX[i][3]=x3[i];
}
for(i=0;i<240;i++)
{
matY[i]=y3[i];
}
double q1=j;
double dEdit3;
char cBuffer1[10];
dEdit3=q1;
_gcvt(dEdit3,10,cBuffer1);
MessageBox(cBuffer1);
}
void CMyView::OnButton4()
{
// TODO: Add your control notification handler code here
CMatrix X11(240,4);
CMatrix XT(4,240);
CMatrix YYY(240,1);
CMatrix MM(4,4);
CMatrix BETA(4,1);
int i,j;
for (i=0;i<4;i++)
{
for(j=0;j<240;j++)
X11.SetElement (j,i,matX[j][i]);
}
for(i=0;i<240;i++)
YYY.SetElement (i,0,matY[i]);
XT=X11.Transpose();
MM=XT*X11;
if(MM.InvertGaussJordan ())
BETA=MM*XT*YYY;
CString m_strMatrix3;
m_strMatrix3=BETA.ToString ("");
AfxMessageBox(m_strMatrix3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -