亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? somview.cpp

?? 神經網絡中的無監督學習中的SOM學習算法
?? CPP
字號:
// SOMView.cpp : implementation of the CSOMView class
//

#include "stdafx.h"
#include "SOM.h"

#include "SOMDoc.h"
#include "SOMView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSOMView

#define TIMER_ID 0x12345678
#define WEIGHT_NUM 25

IMPLEMENT_DYNCREATE(CSOMView, CView)

BEGIN_MESSAGE_MAP(CSOMView, CView)
	//{{AFX_MSG_MAP(CSOMView)
	ON_COMMAND(ID_BUTTON_NORM, OnButtonNorm)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_NORM, OnUpdateButtonNorm)
	ON_COMMAND(ID_BUTTON_AVE, OnButtonAve)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_AVE, OnUpdateButtonAve)
	ON_COMMAND(ID_BUTTON_W_RESET, OnButtonWReset)
	ON_WM_TIMER()
	ON_COMMAND(ID_BUTTON_CLEAR, OnButtonClear)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_CLEAR, OnUpdateButtonClear)
	ON_COMMAND(ID_BUTTON_STOP, OnButtonStop)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_STOP, OnUpdateButtonStop)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_TRAIN, OnUpdateButtonTrain)
	ON_COMMAND(ID_BUTTON_TRAIN, OnButtonTrain)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_W_RESET, OnUpdateButtonWReset)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSOMView construction/destruction

CSOMView::CSOMView()
{
	// TODO: add construction code here
    m_pPointPainter = NULL;
    m_pWeightPainter = NULL;
    m_pBitMap = NULL;
    m_pMemDC = NULL;

    m_nState = STOPPED;
    m_nIndex = -1;
    m_nStep = 0;
}

CSOMView::~CSOMView()
{
    if (m_pPointPainter)
        delete m_pPointPainter;
    if (m_pWeightPainter)
        delete m_pWeightPainter;

    if (m_pBitMap)
    {
        m_pBitMap->DeleteObject();
        delete m_pBitMap;
    }

    if (m_pMemDC)
    {
        m_pMemDC->DeleteDC();
        delete m_pMemDC;
    }
}

BOOL CSOMView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CSOMView drawing
void CSOMView::DrawResult()
{
    CSOMDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
    ASSERT_VALID(m_pMemDC);

    static CPen penCorrdinate(PS_SOLID, 1, RGB(0, 0, 0));
    static CPen penLine(PS_SOLID, 1, RGB(200, 200, 200));
    static CPen penPoint1(PS_SOLID, 3, RGB(255, 0, 0));
    CBrush *pOldBrush;
    CPen *pOldPen;
    CRect rect;
    
    rect = m_pPointPainter->GetRect();
    rect.right = m_pWeightPainter->GetRect().right;

    pOldPen = m_pMemDC->GetCurrentPen();
    pOldBrush = m_pMemDC->GetCurrentBrush();

    int i;
    if (!m_pBitMap)
    {
        m_pBitMap = new CBitmap;
        m_pBitMap->CreateCompatibleBitmap(GetDC(), rect.Width(), rect.Height());
        m_pMemDC->SelectObject(&penCorrdinate);
        m_pMemDC->SelectObject(m_pBitMap);
        m_pPointPainter->DrawCoordinate(m_pMemDC);
        
        const VecPoint& vecPoint = pDoc->GetPatterns();
        if (!vecPoint.empty())
        {
            m_pMemDC->SelectObject(&penPoint1);
            for (i = 0; i <= vecPoint.size(); i++)
                m_pPointPainter->DrawPoint(m_pMemDC, &vecPoint[i]);    
        }
    }
    else
    {
        m_pMemDC->SelectObject(m_pBitMap);
    }


    m_pMemDC->SelectObject(&penCorrdinate);
    m_pWeightPainter->DrawCoordinate(m_pMemDC);
    
    int j;
    for (i = 0; i < WEIGHT_NUM; i++)
        for (j = 0; j < WEIGHT_NUM; j++)
        {
            CPointf &pf1 = pDoc->GetWeight(i, j);
            CPoint pl1;
            m_pWeightPainter->MPtoLP(&pf1, &pl1);

            m_pMemDC->SelectObject(&penLine);
            if (i != WEIGHT_NUM - 1)
            {
                CPointf &pf2 = pDoc->GetWeight(i + 1, j);
                CPoint pl2;
                m_pWeightPainter->MPtoLP(&pf2, &pl2);
                m_pMemDC->MoveTo(pl1);
                m_pMemDC->LineTo(pl2);
            }
            
            if (j != WEIGHT_NUM - 1)
            {
                CPointf &pf2 = pDoc->GetWeight(i, j + 1);
                CPoint pl2;
                m_pWeightPainter->MPtoLP(&pf2, &pl2);
                m_pMemDC->MoveTo(pl1);
                m_pMemDC->LineTo(pl2);
            }

            m_pMemDC->SelectObject(&penPoint1);
            m_pWeightPainter->DrawPoint(m_pMemDC, &pf1);
        }
    CRect rc;
    CString str;
    rc.left = rect.right - 90;
    rc.right = rect.right;
    rc.top = rect.bottom - 20;
    rc.bottom = rect.bottom;
    str.Format("step=%d", m_nStep);
    m_pMemDC->DrawText(str, &rc, DT_CENTER);

    m_pMemDC->SelectObject(pOldPen);
    m_pMemDC->SelectObject(pOldBrush);
}

void CSOMView::OnDraw(CDC* pDC)
{
    pDC->BitBlt(m_pPointPainter->GetRect().left, 
                m_pPointPainter->GetRect().top,
                m_pPointPainter->GetRect().Width() + m_pWeightPainter->GetRect().Width(),
                m_pPointPainter->GetRect().Height(),
                m_pMemDC, 0, 0, SRCCOPY);
}

/////////////////////////////////////////////////////////////////////////////
// CSOMView printing

BOOL CSOMView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CSOMView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CSOMView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CSOMView diagnostics

#ifdef _DEBUG
void CSOMView::AssertValid() const
{
	CView::AssertValid();
}

void CSOMView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CSOMDoc* CSOMView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSOMDoc)));
	return (CSOMDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSOMView message handlers
void CSOMView::Update()
{
    DrawResult();
    GetDocument()->UpdateAllViews(NULL);
}

void CSOMView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	
	if (m_pPointPainter == NULL && m_pWeightPainter == NULL && m_pMemDC == NULL)
    {
        CRect rect;
	    GetClientRect(&rect);
        rect.right = rect.left + 300;
        rect.bottom = rect.top + 300;
        m_pPointPainter = new PainterFacade(rect, 150);
        rect.left = rect.right;
        rect.right = rect.right + 300;
        m_pWeightPainter = new PainterFacade(rect, 150);
        
        m_pMemDC = new CDC;
        
        m_pMemDC->CreateCompatibleDC(GetDC());
        
    }

    OnButtonWReset();
}

void CSOMView::OnButtonNorm() 
{
	CSOMDoc *pDoc = GetDocument();
    
    pDoc->AddNormalPatterns(1000, 0, 0.4, -1, 1);    
    if (m_pBitMap)
    {
        delete m_pBitMap;
        m_pBitMap = NULL;
    }
    m_nState = IDLE;

    Update();
}

void CSOMView::OnUpdateButtonNorm(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_nState != TRAIN);
}

void CSOMView::OnButtonAve() 
{
	CSOMDoc *pDoc = GetDocument();
    
    pDoc->AddAveragePatterns(1000, -1, 1);
    if (m_pBitMap)
    {
        delete m_pBitMap;
        m_pBitMap = NULL;
    }
    m_nState = IDLE;
    
    Update();
}

void CSOMView::OnUpdateButtonAve(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_nState != TRAIN);
}

void CSOMView::OnButtonTrain() 
{
	SetTimer(TIMER_ID, 42, NULL);

    m_nIndex = 0;
    m_nStep = 0;
    m_nState = TRAIN;
}

void CSOMView::OnUpdateButtonTrain(CCmdUI* pCmdUI) 
{
    pCmdUI->Enable(m_nState == IDLE);	
}

void CSOMView::OnButtonWReset() 
{
    if (m_nState == TRAIN)
    {
        KillTimer(TIMER_ID);
        m_nIndex = -1;
        m_nState = IDLE;
    }

    CSOMDoc *pDoc = GetDocument();
    pDoc->ResetWeights(WEIGHT_NUM, WEIGHT_NUM);
    Update();
}

void CSOMView::OnUpdateButtonWReset(CCmdUI* pCmdUI) 
{
    pCmdUI->Enable(TRUE);	
}

void CSOMView::OnButtonClear() 
{
	CSOMDoc *pDoc = GetDocument();
    
    pDoc->ClearPatterns();
    if (m_pBitMap)
    {
        delete m_pBitMap;
        m_pBitMap = NULL;
    }
    m_nState = STOPPED;

    Update();
}

void CSOMView::OnUpdateButtonClear(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_nState != TRAIN);
}

void CSOMView::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == TIMER_ID && m_nIndex != -1)
    {
	    CSOMDoc *pDoc = GetDocument();
        static int nonchange = 0;
        
        if (m_nIndex == 0)
            nonchange = 0;

        bool ret = pDoc->Train(m_nIndex, m_nStep);
        if (!ret)
        {
            nonchange++;
        }

        m_nIndex++;
        m_nStep++;
        if (m_nIndex == pDoc->GetPatterns().size())
        {
            if (nonchange == pDoc->GetPatterns().size())
            {
                KillTimer(TIMER_ID);
                m_nIndex = -1;
                m_nState = STOPPED;
            }
            else
            {
                m_nIndex = 0;
            }
        }

        Update();
    }
	
	CView::OnTimer(nIDEvent);
}

void CSOMView::OnButtonStop() 
{
    m_nState = IDLE;
    
    KillTimer(TIMER_ID);
    m_nIndex = -1;
}

void CSOMView::OnUpdateButtonStop(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(m_nState == TRAIN);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久第一福利| 91精品国产色综合久久ai换脸 | 国产乱妇无码大片在线观看| 亚洲国产日日夜夜| 亚洲三级免费观看| 国产三级精品三级| 国产欧美精品一区二区色综合朱莉 | 久久99精品网久久| 久久er99热精品一区二区| 视频在线观看91| 日韩av电影免费观看高清完整版 | 国产乱子伦视频一区二区三区| 九九精品一区二区| 国产美女av一区二区三区| 韩国欧美国产1区| 韩国精品在线观看| 成人免费视频免费观看| 波多野结衣中文字幕一区二区三区 | 精品国产乱码久久久久久老虎| 久久综合久久综合久久| 国产日韩欧美精品一区| 国产精品免费视频观看| 亚洲欧美日韩国产综合| 亚洲一线二线三线视频| 午夜婷婷国产麻豆精品| 毛片av中文字幕一区二区| 九九视频精品免费| 99re热这里只有精品免费视频| 色婷婷久久99综合精品jk白丝 | 精品系列免费在线观看| 国产精品888| 色欧美日韩亚洲| 日韩欧美一区在线| 国产欧美日韩亚州综合 | 青青草国产成人av片免费| 九色porny丨国产精品| 99久久777色| 91精品国产乱码久久蜜臀| 欧美激情艳妇裸体舞| 亚洲成人在线免费| 国产乱子轮精品视频| 欧美视频在线一区二区三区| 久久久久久久久久久电影| 亚洲日韩欧美一区二区在线| 日韩综合一区二区| 99久久精品国产一区二区三区 | 欧美激情艳妇裸体舞| 午夜久久久久久| 不卡大黄网站免费看| 欧美不卡激情三级在线观看| 亚洲综合色区另类av| 国产精品 日产精品 欧美精品| 欧美色图免费看| 一个色妞综合视频在线观看| 国产一区二区剧情av在线| 欧美亚洲日本国产| 亚洲欧美在线观看| 国产在线不卡一卡二卡三卡四卡| 欧美美女一区二区三区| 亚洲欧美日韩一区二区三区在线观看 | 亚洲欧洲中文日韩久久av乱码| 美女尤物国产一区| 欧美日韩亚洲国产综合| 国产精品国产三级国产aⅴ入口| 日韩激情视频在线观看| 99r国产精品| 欧美国产亚洲另类动漫| 久久99国产精品麻豆| 欧美艳星brazzers| 亚洲一级二级在线| 91视频精品在这里| 中文在线资源观看网站视频免费不卡 | 色香色香欲天天天影视综合网| 国产精品区一区二区三区| 国内精品嫩模私拍在线| 欧美一二三四在线| 五月天精品一区二区三区| 色综合久久久久综合体桃花网| 国产精品国产三级国产普通话蜜臀| 国产精品一级二级三级| 欧美成人欧美edvon| 久久草av在线| 精品国产一区二区三区忘忧草| 黄色资源网久久资源365| 精品久久久久久久久久久久包黑料 | 色噜噜狠狠成人网p站| 中文字幕一区二区在线播放| 成人av在线观| 亚洲天堂网中文字| 色香色香欲天天天影视综合网| 亚洲人成伊人成综合网小说| 91在线一区二区三区| 亚洲在线免费播放| 欧美妇女性影城| 九色porny丨国产精品| 欧美激情一区二区三区| 91老师国产黑色丝袜在线| 亚洲一区二区精品久久av| 91精品国产乱| 国产精品亚洲视频| 亚洲欧美日韩电影| 欧美一区二区三区四区在线观看 | 日韩一区二区三区精品视频| 精品在线免费观看| 成人欧美一区二区三区白人| 精品视频一区 二区 三区| 久久国产综合精品| 国产精品久久久一本精品| 欧美三级日韩三级国产三级| 久久精品国产亚洲a| 国产精品卡一卡二| 欧美日韩精品一区二区三区| 国产综合久久久久久鬼色| 亚洲美女淫视频| 久久网站最新地址| 在线观看不卡一区| 国产一区二区三区综合| 亚洲理论在线观看| 精品国产百合女同互慰| 91首页免费视频| 精品一区二区三区视频在线观看| 亚洲人成亚洲人成在线观看图片 | 欧美三级韩国三级日本三斤| 美腿丝袜在线亚洲一区| 亚洲日本丝袜连裤袜办公室| 日韩欧美123| 欧洲人成人精品| 国产成人免费视| 日本不卡一二三区黄网| 亚洲色图20p| 国产精品色眯眯| 精品国产乱码久久久久久免费| 91精品91久久久中77777| 懂色av一区二区夜夜嗨| 麻豆精品在线看| 亚洲国产精品一区二区久久恐怖片| 久久精品水蜜桃av综合天堂| 337p亚洲精品色噜噜噜| 在线观看日韩一区| 色综合欧美在线视频区| 波多野结衣中文字幕一区| 国产激情精品久久久第一区二区| 日韩1区2区3区| 丝袜美腿亚洲色图| 亚洲国产精品精华液网站| 亚洲免费观看视频| 亚洲欧美乱综合| 亚洲精品日日夜夜| 亚洲欧美国产三级| 欧美大片免费久久精品三p| 欧美精品色综合| 欧美乱妇15p| 欧美一区二区观看视频| 欧美精品tushy高清| 欧美浪妇xxxx高跟鞋交| 欧美视频精品在线| 欧美日韩国产免费一区二区 | 成人sese在线| av在线这里只有精品| 国产成人av在线影院| 豆国产96在线|亚洲| 成人av在线一区二区三区| 色综合中文字幕国产| 粉嫩高潮美女一区二区三区| 高清国产一区二区三区| 成人黄色av网站在线| 91麻豆自制传媒国产之光| 色综合天天在线| 欧美日韩电影在线| 欧美一区三区四区| 26uuu久久天堂性欧美| 久久久久久免费网| 成人免费一区二区三区视频| 亚洲黄色在线视频| 日韩激情在线观看| 狠狠色2019综合网| 国产精品888| 在线免费av一区| 欧美成人乱码一区二区三区| 国产亚洲综合av| 亚洲精品国产精华液| 日韩国产欧美在线视频| 国产精品996| 欧美日韩高清不卡| 国产午夜精品在线观看| 亚洲欧美激情一区二区| 午夜精品成人在线| 国产精品影视在线| 日本韩国视频一区二区| 精品91自产拍在线观看一区| 亚洲欧洲国产日本综合| 日日摸夜夜添夜夜添亚洲女人| 国内精品久久久久影院色| 99riav久久精品riav| 日韩久久久精品| 一区二区三区加勒比av| 精品一二三四区| 欧美亚州韩日在线看免费版国语版| 精品国产三级电影在线观看| 一区二区三区在线播放|