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

📄 qushixiangview.cpp

📁 vc++消除趋势相源程序 可用于基于VC++的数字信号处理 在实际信号处理中也有很好的应用。
💻 CPP
字号:
// qushixiangView.cpp : implementation of the CQushixiangView class
//

#include "stdafx.h"
#include "qushixiang.h"
#include <Afxtempl.h>
#include "qushixiangDoc.h"
#include "qushixiangView.h"

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

unsigned short G[1920][1536];
float GG[1920][1536];
/////////////////////////////////////////////////////////////////////////////
// CQushixiangView

IMPLEMENT_DYNCREATE(CQushixiangView, CView)

BEGIN_MESSAGE_MAP(CQushixiangView, CView)
	//{{AFX_MSG_MAP(CQushixiangView)
	ON_COMMAND(ID_QUSHINIHE, OnQushinihe)
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CQushixiangView construction/destruction

CQushixiangView::CQushixiangView()
{
	// TODO: add construction code here

}

CQushixiangView::~CQushixiangView()
{
}

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

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CQushixiangView drawing

void CQushixiangView::OnDraw(CDC* pDC)
{
	CQushixiangDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CQushixiangView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CQushixiangView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CQushixiangView message handlers

void CQushixiangView::OnQushinihe() 
{
	CArray<float,float> x;
    CArray<float,float> y;
    CArray<float,float> chazhi;
	float g,q,d2;
	float m_a[5];
	int m=5;
	float resule,resultcha;
	int l,i,j,xdata;
	float ydata;
	char *fileopen="e://6.raw";
	char *fileclose="d://66.raw";
	FILE *fileread,*filewrite;
	fileread=fopen(fileopen,"rb");
	if(fileread==NULL)
    {   
		MessageBox("File1 open error");
		
		return;
	}
	
	for(i=0;i<1920;i++)
	{
		for(j=0;j<1536;j++)
		{
			
			fread(&G[i][j],sizeof(unsigned short),1,fileread);
			
			
		}
	}

	fclose(fileread);
	/////////////////////////开始拟合曲线//////////////////
	for(l=0;l<1920;l++)
	{
		
		for(j=0; j<1536; j++)
		{
			ydata=(float)G[i][j];
			y.Add(ydata);
			xdata=j;
			x.Add(xdata);
			
			
		}
		if(y.GetSize()>1)
		{
			
			
			int n=y.GetSize();
			
			
			for(int i=0; i<m; i++) 
			{
				m_a[i]=0.0;
			}
            if(m>n) m = n;
            if(m>20) m=20;
			float z=0.0;float p=0.0;float c=0.0;
			for(i=0; i<n; i++) 
			{
				z = z + x[i] / n;
			}
			float b[20],s[20],t[20];
			b[0]=1.0;
			float d1 = n;
			for(i=0; i<n; i++)
			{ 
				p=p+(x[i]-z);
				c=c+y[i];
			}
			c=c/d1; 
			p=p/d1;
			m_a[0]=c*b[0];
			if(m>1)
			{
				t[1]=1.0;
				t[0]=-p;
				d2=0.0;
				c=0.0; 
				g=0.0;
				for(i=0; i<n; i++)
				{ 
					q=x[i]-z-p; d2=d2+q*q;
					c=c+y[i]*q;
					g=g+(x[i]-z)*q*q;
				}
				c=c/d2;
				p=g/d2;
				q=d2/d1;
				d1=d2;
				m_a[1]=c*t[1]; 
				m_a[0]=c*t[0]+m_a[0];
			}
			
			for(int j=2; j<m; j++)
			{ 
				s[j]=t[j-1];
				s[j-1]=-p*t[j-1]+t[j-2];
				if(j>=3)
					for(int k=j-2; k>=1; k--)	s[k]=-p*t[k]+t[k-1]-q*b[k];
					s[0]=-p*t[0]-q*b[0];
					d2=0.0;
					c=0.0;
					g=0.0;
					for(i=0; i<n; i++)
					{ 
						q=s[j];
						for(int k=j-1; k>=0; k--)	q=q*(x[i]-z)+s[k];
						d2=d2+q*q; c=c+y[i]*q;
						g=g+(x[i]-z)*q*q;
					}
					c=c/d2; 
					p=g/d2; 
					q=d2/d1;
					d1=d2;
					m_a[j]=c*s[j]; t[j]=s[j];
					for(int k=j-1; k>=0; k--)
					{
						m_a[k]=c*s[k]+m_a[k];
						b[k]=t[k]; t[k]=s[k];
					}
			}
			
			for(int ii=0;ii<n;ii++)
			{
				float cc=x[ii]-z;
				resule=m_a[0]+m_a[1]*cc+m_a[2]*cc*cc+m_a[3]*cc*cc*cc+m_a[4]*cc*cc*cc*cc;
				resultcha=y[ii]-resule;
				chazhi.Add(resultcha);
			}
			
			float minpoint=0.0,maxpoint=0.0;
			for(int ii2=0;ii2<n;ii2++)
			{
				if(chazhi[ii2]<minpoint)
				{
					minpoint=chazhi[ii2];
				}
				if(chazhi[ii2]>maxpoint)
				{
					maxpoint=chazhi[ii2];
					
				}
			}
			if(minpoint<0)
			{
				for(int ii3=0;ii3<n;ii3++)
                {
                    chazhi[ii3]=chazhi[ii3]-minpoint;
					
				}
                
                maxpoint=maxpoint-minpoint;
				minpoint=0;
				
				
			}
			else
			{
				
				maxpoint=maxpoint;
				minpoint=minpoint;
				
				
			}
			int ratio;
			ratio=4096/maxpoint;
			
			
			
			
			for(j = 0; j < 1536; j++)
			{
				float newdata=chazhi[j]*ratio;
				GG[i][j]=newdata;
				
			}
			
			x.RemoveAll();
			y.RemoveAll();
			chazhi.RemoveAll();
			
			
		 }
		 
		 
		 
		 
		 
		 
		 
}

   filewrite=fopen(fileclose,"wb");
	if(filewrite==NULL)
    {   
		MessageBox("File open error");
		
		return;
	}
	
	for(i=0;i<1920;i++)
	{
		for(j=0;j<1536;j++)
		{
			
			fwrite(&GG[i][j],sizeof(float),1,fileread);
			
			
		}
	}

	fclose(filewrite);
	////////////////////////////////////////////////////////
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -