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

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

?? signal.cpp

?? DSP圖像處理程序源碼
?? CPP
字號:
// Dsignal.cpp: implementation of the Dsignal class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "signal.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Dsignal::Dsignal(void){
	length=1;
	sgnt=(double *)malloc(sizeof(double));
	sgnw=(complex *)malloc(sizeof(complex));
	*sgnt=0;
	FFT();
}
Dsignal::Dsignal(int N){
	length=N;
	sgnt=(double *)malloc(sizeof(double)*N);
	sgnw=(complex *)malloc(sizeof(complex)*N);
	int i;
	for (i=0;i<N;i++){
		sgnt[i]=0.0;
	}
	FFT();
}
Dsignal::Dsignal(double *xn,int N){
	length=N;
	sgnt=(double *)malloc(sizeof(double)*N);
	sgnw=(complex *)malloc(sizeof(complex)*N);
	int i;
	for (i=0;i<N;i++){
		sgnt[i]=xn[i];
	}
	FFT();
}
void Dsignal::FFT(){
	CFFT::FFT(sgnt,sgnw,length);
}
void Dsignal::IFFT(){
	CFFT::IFFT(sgnw,sgnt,length);
}
Dsignal& Dsignal::operator = (const Dsignal Orign){
	int i;
	length=Orign.length;
	(*this).fitForLen(length);
	for (i=0;i<Orign.length;i++){
		sgnt[i]=Orign.sgnt[i];
		sgnw[i]=Orign.sgnw[i];
	}
	return *this;
}
Dsignal& Dsignal::operator = (const double *Orign){
	int i;
	for (i=0;i<length;i++)
		sgnt[i]=Orign[i];
	FFT();
	return *this;
}
Dsignal& Dsignal::operator = (const complex *Orign){
	int i;
	for (i=0;i<length;i++)
		sgnw[i]=Orign[i];
	IFFT();
	return *this;
}
void Dsignal::fitForLen(int N){
	double *sgntemp;
	int i,j;
	sgntemp=(double *)malloc(sizeof(double)*length);
	for (j=0;j<length;j++)
		sgntemp[j]=sgnt[j];
	i=length;
	length=N;
	sgnt=(double *)malloc(sizeof(double)*length);
	sgnw=(complex *)malloc(sizeof(complex)*length);
	if (i<N)
	{
	for (j=0;j<i;j++){
		sgnt[j]=sgntemp[j];
	}
	for (j=i;j<N;j++){
		sgnt[j]=0.0;
	}
	}
	else 
	{
		for (j=0;j<N;j++)
		{
			sgnt[j]=sgntemp[j];
		}
	}
	FFT();
}

void Dsignal::fitForLenW(int N){
	complex *sgntemp;
	int i,j;
	sgntemp=(complex *)malloc(sizeof(complex)*length);
	for (j=0;j<length;j++)
		sgntemp[j]=sgnw[j];
	i=length;
	length=N;
	sgnt=(double *)malloc(sizeof(double)*length);
	sgnw=(complex *)malloc(sizeof(complex)*length);
	if (i<N)
	{
	for (j=0;j<i;j++){
		sgnw[j]=sgntemp[j];
	}
	for (j=i;j<N;j++){
		sgnw[j]=complex(0,0);
	}
	}
	else 
	{
		for (j=0;j<N;j++)
			sgnw[j]=sgntemp[j];
	}
	IFFT();
}

Dsignal operator+ (Dsignal s1,Dsignal s2){
	int length;
	if (s1.length>s2.length){
		length=s1.length;
		s2.fitForLen(length);
	}
	else {
		length=s2.length;
		s1.fitForLen(length);
	}
	Dsignal s3;
	s3.length=length;
	s3.sgnt=(double *)malloc(sizeof(double)*length);
	s3.sgnw=(complex *)malloc(sizeof(complex)*length);
	int i;
	for(i=0;i<length;i++)
		s3.sgnt[i]=s1.sgnt[i]+s2.sgnt[i];
	s3.FFT();
	return s3;
}

Dsignal operator- (Dsignal s1,Dsignal s2){
	int length;
	if (s1.length>s2.length){
		length=s1.length;
		s2.fitForLen(length);
	}
	else {
		length=s2.length;
		s1.fitForLen(length);
	}
	Dsignal s3;
	s3.length=length;
	s3.sgnt=(double *)malloc(sizeof(double)*length);
	s3.sgnw=(complex *)malloc(sizeof(complex)*length);
	int i;
	for(i=0;i<length;i++)
		s3.sgnt[i]=s1.sgnt[i]-s2.sgnt[i];
	s3.FFT();
	return s3;
}

Dsignal operator* (Dsignal s1,Dsignal s2){
	int length;
	if (s1.length>s2.length){
		length=s1.length;
		s2.fitForLen(length);
	}
	else {
		length=s2.length;
		s1.fitForLen(length);
	}
	Dsignal s3;
	s3.length=length;
	s3.sgnt=(double *)malloc(sizeof(double)*length);
	s3.sgnw=(complex *)malloc(sizeof(complex)*length);
	int i;
	for(i=0;i<length;i++)
		s3.sgnt[i]=s1.sgnt[i]*s2.sgnt[i];
	s3.FFT();
	return s3;
}

Dsignal operator^ (Dsignal s1,Dsignal s2){
	return Dsignal::conv(s1,s2);
}

Dsignal& Dsignal::ChangeToDB(void){
	double first;
	first=(*this).sgnt[0];
	for(int i=0;i<(*this).length;i++)
	{
		(*this).sgnt[i]=20*log10((*this).sgnt[i]/first);
	}
	return (*this);
}

Dsignal Dsignal::conv(Dsignal s1,Dsignal s2){
	int length;
	length=s1.length+s2.length-1;
	Dsignal s3;
	s3.length=length;
	s3.sgnt=(double *)malloc(sizeof(double)*length);
	s3.sgnw=(complex *)malloc(sizeof(complex)*length);
	s1.fitForLen(length);
	s2.fitForLen(length);
	s1.FFT();
	s2.FFT();
	int i;
	for (i=0;i<length;i++)
		s3.sgnw[i]=s1.sgnw[i]*s2.sgnw[i];
	s3.IFFT();
	return s3;
}

void Dsignal::print(void){
	int i;
	for (i=0;i<length;i++){
		cout<<sgnt[i]<<"    ";
		sgnw[i].print();
	}
}
bool operator==(const Dsignal s1, const Dsignal s2) {
  int flag=1;
	if (s1.length!=s2.length) flag=0;
  else {
	  int i,length;
	  length=s1.length;
	  i=0;
	  while (i<length){
		  if (fabs(s1.sgnt[i]-s2.sgnt[i])>0.00000001){
			  flag=0;
			  break;
		  }
		  i++;
	  }
	  
  }
  if (flag) return true;
  else return false;
}

Dsignal& Dsignal::GetLowpassHn(double wp,double ws,double attenuation)
{
	Dsignal hdn;
	Dsignal wn;
	wn=SelectWindowStyle(wp,ws,attenuation);
	hdn.fitForLen(wn.length);
	hdn.setStyle((wp+ws)/2.0,0);
	(*this)=hdn*wn;
	return *this;
}

Dsignal& Dsignal::GetLowpassHdn(double wp,double ws,double attenuation)
{
	Dsignal wn;
	wn=SelectWindowStyle(wp,ws,attenuation);
	(*this).fitForLen(wn.length);
	(*this).setStyle((wp+ws)/2.0,0);
	return (*this);
}

Dsignal& Dsignal::SelectWindowStyle(double wp,double ws,double attenuation)
{
	int windowstyle=0;
	double excessboard=0.9;
	double wc;
	double detaw;
	wc=(wp+ws)/2;
	detaw=ws-wp;
	int N;
	if (attenuation<=21) {windowstyle=RectangleW;excessboard=0.9;}
	else if (attenuation<=25) {windowstyle=Triangle;excessboard=2.1;}
	else if (attenuation<=44) {windowstyle=Hanning;excessboard=3.1;}
	else if (attenuation<=53) {windowstyle=Hamming;excessboard=3.3;}
	else if (attenuation<=74) {windowstyle=Blackman;excessboard=5.5;}
	N=(int)ceil(excessboard*2*M_PI/detaw);
	if (N%2==0) N++;
	(*this).fitForLen(N);
	setStyle(wc,windowstyle);
	return *this;
}

void Dsignal::setStyle(double wc,int style)
{	int n;
	double temp2;
	double temp1;
	switch(style)
	{
	case LowpassHd:
		for (n=0;n<length;n++)
		{	temp1=wc*(n-(length-1)/2.0);
			if (fabs(temp1)<0.0001)
				temp2=1.0;
			else temp2=sin(temp1)/(temp1);
			sgnt[n]=wc/M_PI*temp2;
		}
		break;
	case RectangleW:
		for (n=0;n<length;n++)
		{
			sgnt[n]=1.0;
		}
		break;
	case Triangle:
		for (n=0;n<=(length-1)/2;n++)
		{
			sgnt[n]=2.0*n/(length-1);
		}
		for (;n<length;n++)
		{
			sgnt[n]=2-2.0*n/(length-1);
		}
		break;
	case Hanning:
		for (n=0;n<length;n++)
		{
			sgnt[n]=1/2.0*(1-cos(2.0*M_PI*n/(length-1)));
		}
		break;
	case Hamming:
		for(n=0;n<length;n++)
		{
			sgnt[n]=0.54-0.46*cos(2*M_PI*n/(length-1));
		}
		break;
	case Blackman:
		for (n=0;n<length;n++)
		{
			sgnt[n]=0.42-0.5*cos(2*M_PI*n/(length-1))+0.08*cos(4*M_PI*n/(length-1));
		}
		break;
	default: break;
	}
}

Dsignal& Dsignal::FreqChangeToTime(Dsignal sgn)
{
	(*this).fitForLen(sgn.length);
	int i;
	for (i=0;i<sgn.length;i++)
	{
		(*this).sgnt[i]=sgn.sgnw[i].abs();
	}
	return (*this);
}

void Dsignal::SignalToCString(CString &str)
{
	str.Empty();
	CString strtemp;
	for (int i=0;i<length;i++)
	{
		strtemp.Format("%4.4f",sgnt[i]);
		str=str+strtemp+' ';
	}

}

Dsignal& Dsignal::CStringToSignal(CString str)
{
	CString temp;
	double array[100]={0};
	    for (int i=0,aim=0;i<str.GetLength();i++)
		{
			if (str.Mid(i,1)!=" "&&str.Mid(i,1)!="\0")
				temp+=str.Mid(i,1);
			else 
			{
				array[aim++]=atof(temp);
				temp.Empty();
			}
		}
		(*this).fitForLen(aim);
		for (i=0;i<aim;i++)
		(*this).sgnt[i]=array[i];
		(*this).FFT();
	return *this;
}

Dsignal& Dsignal::Mid(int left,int right)
{
	if (left<0)
		left=0;
	if (left>(*this).length-1)
		left=(*this).length-1;
	if (right<0)
		right=0;
	if (right>(*this).length-1)
		right=(*this).length-1;
	if (left<=right&&(*this).length>right)
	{
	Dsignal sgntemp;
	sgntemp=(*this);

	(*this).fitForLen(right-left+1);
	for (int i=0;i<right-left+1;i++)
	{
		(*this).sgnt[i]=sgntemp.sgnt[left+i];
	}
	}
	return (*this);
}

double Dsignal::maxnum(){
	double max=sgnt[0];
	double temp;
	for (int i=0;i<length;i++){
		temp=sgnt[i];
		if (temp>max) max=temp;
		
	}
	return max;
}

double Dsignal::minnum(){
	double min=sgnt[0];
	double temp;
	for (int i=0;i<length;i++){
		temp=sgnt[i];
		if (temp<min) min=temp;
		
	}
	return min;
}

Dsignal::~Dsignal(){
}


/*debug
void main(){
	
	Dsignal sgn1,sgn2,sgn3;
	sgn1.fitForLen(101);
	sgn2.fitForLen(101);
	sgn1.setStyle(M_PI/4,0);
	sgn2.setStyle(M_PI/2,5);
	sgn3=sgn1*sgn2;
	for (int i=0;i<sgn3.length/2;i++)
		cout<<sgn3.sgnw[i].abs()<<endl;
}
//debug*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久se这里有精品| 精品伦理精品一区| 日韩视频中午一区| 亚洲天堂中文字幕| 久久超碰97中文字幕| 在线免费一区三区| 国产精品乱子久久久久| 久久国产人妖系列| 欧美日韩www| 亚洲欧美日韩久久| 成人免费观看男女羞羞视频| 日韩亚洲欧美成人一区| 亚洲成av人片在www色猫咪| 99久久精品国产一区| 久久久一区二区三区捆绑**| 蜜臀久久99精品久久久久久9| 欧美视频第二页| 一区二区三区四区在线播放| 99久久er热在这里只有精品66| 国产天堂亚洲国产碰碰| 久久成人羞羞网站| 精品久久久久久无| 精品在线播放午夜| 精品久久久久香蕉网| 蜜臀av性久久久久蜜臀av麻豆| 欧美日韩美女一区二区| 亚洲一区视频在线观看视频| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 久久九九久久九九| 精品亚洲免费视频| www成人在线观看| 国产一区二区三区四区五区入口 | 国产午夜亚洲精品不卡| 麻豆精品国产传媒mv男同| 欧美一区二区网站| 捆绑调教一区二区三区| 久久婷婷国产综合精品青草 | 美女一区二区久久| 日韩欧美的一区二区| 国内精品视频666| 久久精品亚洲精品国产欧美kt∨| 国产精品1区2区3区| 国产精品久久久久久久蜜臀| 99精品偷自拍| 亚洲.国产.中文慕字在线| 91精品国产综合久久久蜜臀图片 | 99国产精品一区| 亚洲综合丝袜美腿| 欧美精品黑人性xxxx| 美女爽到高潮91| 国产天堂亚洲国产碰碰| 色综合一区二区三区| 日韩影院在线观看| 久久久99精品免费观看不卡| 99久久国产综合精品麻豆| 亚洲成av人**亚洲成av**| 日韩精品专区在线影院重磅| 国产超碰在线一区| 亚洲乱码中文字幕| 精品久久久网站| 91激情五月电影| 国产一区欧美二区| 亚洲一区二区美女| 国产午夜精品久久久久久免费视 | 日本韩国一区二区三区| 日韩精品久久理论片| xf在线a精品一区二区视频网站| 北条麻妃国产九九精品视频| 天堂一区二区在线| 国产精品水嫩水嫩| 制服丝袜成人动漫| 99视频有精品| 久久97超碰色| 亚洲一区视频在线| 国产精品色哟哟网站| 91麻豆精品国产| 99在线精品视频| 国产一区在线观看视频| 午夜电影网一区| 中文成人av在线| 精品国产3级a| 欧美精品久久久久久久久老牛影院| 国产99精品在线观看| 蜜桃久久久久久| 亚洲成人综合网站| 亚洲欧美日韩精品久久久久| 国产亚洲成aⅴ人片在线观看| 欧美精品欧美精品系列| 色婷婷综合久久久| 成人av网在线| 国产成人综合网站| 蜜桃av一区二区| 亚洲午夜羞羞片| 亚洲精品日产精品乱码不卡| 国产日韩欧美制服另类| 精品国产乱码91久久久久久网站| 欧美私模裸体表演在线观看| 99综合影院在线| 成人av午夜影院| 成人教育av在线| 春色校园综合激情亚洲| 国模大尺度一区二区三区| 美女视频一区二区三区| 美女在线一区二区| 免费成人美女在线观看.| 日本女人一区二区三区| 午夜精品一区二区三区三上悠亚| 亚洲另类色综合网站| 一区二区视频免费在线观看| 亚洲啪啪综合av一区二区三区| 国产精品免费视频观看| 中文字幕第一区| 中文字幕欧美一| 一区二区三区免费| 亚洲综合色自拍一区| 亚洲国产色一区| 免费在线观看日韩欧美| 麻豆成人久久精品二区三区红| 日本欧美大码aⅴ在线播放| 日韩1区2区3区| 久久精品国产一区二区三| 国产在线视频精品一区| 国产91在线观看| 99这里只有久久精品视频| 日本乱人伦aⅴ精品| 欧美网站大全在线观看| 91麻豆精品国产自产在线| 欧美mv日韩mv国产| 国产清纯在线一区二区www| 日韩理论片中文av| 午夜不卡av在线| 久热成人在线视频| 成人精品视频网站| 91高清在线观看| 日韩精品一区二区三区在线播放| 久久久久99精品国产片| 最新日韩在线视频| 视频一区二区欧美| 国产精品一色哟哟哟| 91蜜桃网址入口| 欧美一区二区日韩一区二区| 国产午夜亚洲精品理论片色戒 | 日本中文字幕一区| 国产在线精品一区二区三区不卡| 成人免费黄色大片| 欧美高清视频在线高清观看mv色露露十八 | 丝袜脚交一区二区| 国产精品一区二区男女羞羞无遮挡| 成人黄动漫网站免费app| 色呦呦网站一区| 欧美tickle裸体挠脚心vk| 亚洲欧美日韩国产手机在线| 日韩av电影免费观看高清完整版 | 极品少妇xxxx偷拍精品少妇| 99久久婷婷国产综合精品电影| 欧美日韩另类国产亚洲欧美一级| 国产清纯白嫩初高生在线观看91 | 国产一区二区成人久久免费影院| 色诱视频网站一区| 久久久久久久久久久久电影| 亚洲地区一二三色| 成人黄色软件下载| 精品久久人人做人人爽| 亚洲专区一二三| 成人午夜看片网址| 欧美成人r级一区二区三区| 一区二区三区精品视频在线| 国产精品一线二线三线| 91精品国产综合久久精品app| 亚洲欧洲日韩综合一区二区| 国产在线视频一区二区三区| 69成人精品免费视频| 一区二区三区中文字幕电影| 成人免费视频一区二区| 日韩一级视频免费观看在线| 一区二区三区四区激情| 成人午夜激情视频| 久久精品免视看| 久久精品国产免费看久久精品| 欧美午夜影院一区| 一区二区三区精密机械公司| 99精品视频一区| 国产精品区一区二区三区| 国产精品亚洲一区二区三区在线| 欧美一区二区不卡视频| 婷婷中文字幕综合| 欧美日韩国产乱码电影| 亚洲高清免费在线| 欧美图片一区二区三区| 亚洲一区二区三区视频在线| 91福利社在线观看| 一区二区免费看| 欧洲亚洲精品在线| 亚洲福利一二三区| 欧美巨大另类极品videosbest | 欧美一级国产精品| 日产欧产美韩系列久久99| 在线播放欧美女士性生活| 亚洲成av人在线观看| 91精品国产高清一区二区三区蜜臀 |