⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 线性回归view.cpp

📁 线性回归建立动态模型的要先在本地注册数据库
💻 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 + -