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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pse.c

?? 本文件包含三個(gè)小程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*********************************************************************

PSE.C - 用FFT實(shí)現(xiàn)功率譜估計(jì)

程序輸入一個(gè)加入噪聲的正弦信號, 采用周期圖法來實(shí)現(xiàn)功率譜分析

參數(shù)如下:
 slice = 每次FFT的長度,缺省為256;
 numav = FFT取平均的組數(shù),缺省為16;
 ovlap = 每次FFT運(yùn)算交叉的點(diǎn)數(shù),缺省為128;
 wtype = 選用窗函數(shù)的類型: 1--5.
 ntype = 選用噪聲信號類型, 0:無噪聲; 1:均勻噪聲; 2:高斯噪聲

使用子程序?yàn)?
fft            基2 DIF FFT 子程序
ifft           基2 DIF IFFT 子程序
log2           基2求對數(shù)函數(shù)
addnoise       在輸入信號上加入均勻分布或高斯分布的噪聲
gaussian       產(chǎn)生均值為零,單位方差的高斯分布隨機(jī)數(shù)
uniform        產(chǎn)生零均值,均勻分布的隨機(jī)數(shù)(-0.5 到 0.5 之間)
ham            Hamming 窗函數(shù)
han            Hanning 窗函數(shù)
triang         triangle 窗函數(shù)
black          Blackman 窗函數(shù)
harris         4 term Blackman-Harris 窗函數(shù)
draw_image     繪圖子程序
***********************************************************************/

#include    <math.h>
#include    <stdlib.h>
#include    <stdio.h>
#include    <string.h>
#include    <conio.h>
#include    <graphics.h>

#define MAX(a,b)    (((a) > (b)) ? (a) : (b))
#define    PI	    (4.0*atan(1.0))

/* COMPLEX STRUCTURE */
typedef struct {
    float real, imag;
} COMPLEX;

 void fft(COMPLEX *,int);
 void ifft(COMPLEX *,int);
 int  log2(unsigned int x);
 double *addnoise(double *Indata,unsigned length,int type,double nmult);
 double gaussian(void);
 double uniform(void);
 void ham(COMPLEX *x, int n);
 void han(COMPLEX *x, int n);
 void triang(COMPLEX *,int n);
 void black(COMPLEX *x, int n);
 void harris(COMPLEX *x, int n);
 void draw_image(double *x,int m,char *title1,char *title2,
		char *xdis1,char *xdis2,int dis_type);
/*********************************************************************/

int numav=16;     /* 每次FFT的長度*/
int slice=256;    /* FFT取平均的組數(shù)*/
int ovlap=128;    /* 每次FFT運(yùn)算交叉的點(diǎn)數(shù) */
int wtype=5;      /* 選用窗函數(shù)的類型: 0--5 */
int ntype=2;      /* 選用噪聲信號類型, 0:無噪聲; 1:均勻噪聲; 2:高斯噪聲 */


void main(void)
{
  int        i, j, m, insize,index;
  int        k,numests,estsize;
  double     a,*mag, *sigfloat;
  double     tempflt;
  char	     title[80],tmp[20];
  COMPLEX    *samp;

  estsize = (slice-ovlap)*(numav-1) + slice;
  printf("The size of each estimate is: %d\n", estsize);
  sigfloat = (double *) calloc(estsize,sizeof(double));
  mag = (double *) calloc(slice,sizeof(double));
  samp = (COMPLEX *) calloc(slice,sizeof(COMPLEX));
  if (!mag || !samp){
    printf("\n  Memory allocation error.\n");
    exit(1);
  }
  /* input signal data series */
  for (i=0; i<estsize; i++)
      sigfloat[i] = cos(6.0*1.0*PI*(double)i*2.0/slice);
  for (i=0; i<estsize; i++)
      sigfloat[i] = sigfloat[i]+sin(35.0*1.0*PI*(double)i*2.0/slice);

  if(ntype==1)  addnoise(sigfloat,estsize,0,0.2); /* 加入均勻噪聲 */
  else if(ntype==2) addnoise(sigfloat,estsize,1,0.2); /* 加入高斯噪聲 */

  strcpy(title,"The Input Signal Data (x[n])");
  draw_image(sigfloat,estsize,title,"The Magnitude value","0",
	     itoa(estsize,tmp,10),0);

  /* calculate the periodical signal estimation value */
  for (k=0; k<slice; k++) mag[k] = 0;
  for (j=0; j<numav; j++){
     for (k=0; k<slice; k++){
	index = j*(slice-ovlap) + k;
	samp[k].real = sigfloat[index];
	samp[k].imag = 0;
     }
     switch (wtype) {
	case 1: ham(samp,slice);
		break;
	case 2: han(samp,slice);
		break;
	case 3: triang(samp,slice);
		break;
	case 4: black(samp,slice);
		break;
	case 5: harris(samp,slice);
		break;
	default:
		break;
     }

     m = log2(slice);
     fft(samp,m);
     a = (double) slice*slice;
     for (k=0; k<slice; k++){
	tempflt  = samp[k].real * samp[k].real;
	tempflt += samp[k].imag * samp[k].imag;
	tempflt = tempflt/a;
	mag[k] += tempflt;
     }
     printf("*");
  }

/*  Take log after averaging the magnitudes.  */

  for (k=0; k<slice/2; k++){
     mag[k] = mag[k]/numav;
     mag[k] = 10*log10(MAX(mag[k],1.e-14));
  }

  strcpy(title,"The Estimation Reault (X[m])");
  draw_image(mag,slice/2,title,"The Magnitude value (dB)","0",
	     "PI",0);

  free(mag);
  free(sigfloat);
  free(samp);
}

/************************************************************************
fft - 基2 DIF FFT 子程序

輸入?yún)?shù):
	 COMPLEX *x : FFT 輸入和輸出數(shù)據(jù)區(qū)指針;
	      int m : FFT 長度 ( length = 2^m );
輸出參數(shù):
	 輸出數(shù)據(jù)放在 x 所指的輸入數(shù)據(jù)區(qū).
	 無輸出參數(shù).

void fft(COMPLEX *x, int m)
*************************************************************************/

void fft(COMPLEX *x,int m)
{
    static COMPLEX *w;           /* used to store the w complex array */
    static int mstore = 0;       /* stores m for future reference */
    static int n = 1;            /* length of fft stored for future */

    COMPLEX u,temp,tm;
    COMPLEX *xi,*xip,*xj,*wptr;

    int i,j,k,l,le,windex;

    double arg,w_real,w_imag,wrecur_real,wrecur_imag,wtemp_real;

    if(m != mstore) {

/* free previously allocated storage and set new m */

	if(mstore != 0) free(w);
	mstore = m;
	if(m == 0) return;       /* if m=0 then done */

/* n = 2**m = fft length */

	n = 1 << m;
	le = n/2;

/* allocate the storage for w */

	w = (COMPLEX *) calloc(le-1,sizeof(COMPLEX));
	if(!w) {
	    printf("\nUnable to allocate complex W array\n");
	    exit(1);
	}

/* calculate the w values recursively */

	arg = 4.0*atan(1.0)/le;         /* PI/le calculation */
	wrecur_real = w_real = cos(arg);
	wrecur_imag = w_imag = -sin(arg);
	xj = w;
	for (j = 1 ; j < le ; j++) {
	    xj->real = (float)wrecur_real;
	    xj->imag = (float)wrecur_imag;
	    xj++;
	    wtemp_real = wrecur_real*w_real - wrecur_imag*w_imag;
	    wrecur_imag = wrecur_real*w_imag + wrecur_imag*w_real;
	    wrecur_real = wtemp_real;
	}
    }

/* start fft */

    le = n;
    windex = 1;
    for (l = 0 ; l < m ; l++) {
	le = le/2;

/* first iteration with no multiplies */

	for(i = 0 ; i < n ; i = i + 2*le) {
	    xi = x + i;
	    xip = xi + le;
	    temp.real = xi->real + xip->real;
	    temp.imag = xi->imag + xip->imag;
	    xip->real = xi->real - xip->real;
	    xip->imag = xi->imag - xip->imag;
	    *xi = temp;
	}

/* remaining iterations use stored w */

	wptr = w + windex - 1;
	for (j = 1 ; j < le ; j++) {
	    u = *wptr;
	    for (i = j ; i < n ; i = i + 2*le) {
		xi = x + i;
		xip = xi + le;
		temp.real = xi->real + xip->real;
		temp.imag = xi->imag + xip->imag;
		tm.real = xi->real - xip->real;
		tm.imag = xi->imag - xip->imag;
		xip->real = tm.real*u.real - tm.imag*u.imag;
		xip->imag = tm.real*u.imag + tm.imag*u.real;
		*xi = temp;
	    }
	    wptr = wptr + windex;
	}
	windex = 2*windex;
    }

/* rearrange data by bit reversing */

    j = 0;
    for (i = 1 ; i < (n-1) ; i++) {
	k = n/2;
	while(k <= j) {
	    j = j - k;
	    k = k/2;
	}
	j = j + k;
	if (i < j) {
	    xi = x + i;
	    xj = x + j;
	    temp = *xj;
	    *xj = *xi;
	    *xi = temp;
	}
    }
}

/**************************************************************************
log2 - 基2求對數(shù)函數(shù)

函數(shù)返回以2為底的輸入整數(shù)的對數(shù)值的整數(shù).
如果對數(shù)值位于兩個(gè)整數(shù)之間,則返回較大值.

int log2(unsigned int x)
*************************************************************************/

int log2(x)
    unsigned int x;
{
    unsigned int mask,i;

    if(x == 0) return(-1);      /* zero is an error, return -1 */

    x--;                        /* get the max index, x-1 */

    for(mask = 1 , i = 0 ; ; mask *= 2 , i++) {
	if(x == 0) return(i);   /* return log2 if all zero */
	x = x & (~mask);        /* AND off a bit */
    }
}

/**************************************************************************
ADDNOISE  - 在輸入信號上加入均勻分布或高斯分布的噪聲

輸入?yún)?shù):
	 double  *Indata: 輸入的未加噪聲的信號序列;
	 unsigned length: 輸入信號序列的長度;
	 int      type  : 加噪聲的類型, 0:均勻  1:高斯
	 double   nmult : 加入噪聲的幅度值系數(shù);

輸出參數(shù):
	 double  *Indata: 在輸入序列上加入噪聲后,仍然將數(shù)據(jù)
			  放在 *Indata 數(shù)據(jù)區(qū)中.
*************************************************************************/

double *addnoise(double *Indata,unsigned length,int type,double nmult)
{
    int i,j;
    double gaussian(),uniform();

/* add noise to record */
    if(type == 0)
	for(i = 0 ; i < length ; i++) Indata[i] += nmult*uniform();
    else
	for(i = 0 ; i < length ; i++) Indata[i] += nmult*gaussian();
    return(Indata);
}

/**************************************************************************
gaussian - 產(chǎn)生均值為零,單位方差的高斯分布隨機(jī)數(shù)

函數(shù)返回 double型零均值,單位方差的高斯分布隨機(jī)數(shù).
使用 Box-Muller 轉(zhuǎn)換方法,將一對均勻分布的隨機(jī)變量映射為一對
高斯隨機(jī)變量.

double gaussian()
*************************************************************************/

double gaussian(void)
{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人aaa| 久久久综合视频| 国产午夜精品久久久久久久| ㊣最新国产の精品bt伙计久久| 亚洲成人综合视频| 成人不卡免费av| 日韩精品一区二区三区在线播放| 亚洲激情网站免费观看| 丁香另类激情小说| 日韩精品综合一本久道在线视频| 尤物在线观看一区| 懂色av一区二区三区免费观看| 91精品国产手机| 亚洲一区二区精品视频| 色综合久久久网| 国产精品视频第一区| 老汉av免费一区二区三区| 欧美日韩免费一区二区三区视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | www.亚洲人| 久久久久久久久岛国免费| 麻豆成人综合网| 欧美一级欧美一级在线播放| 午夜a成v人精品| 在线综合视频播放| 天堂一区二区在线| 欧美日韩成人综合天天影院 | 国产欧美一区二区精品性色| 捆绑调教美女网站视频一区| 欧美一级日韩免费不卡| 免费看欧美美女黄的网站| 欧美色偷偷大香| 亚洲成人777| 日韩亚洲欧美综合| 久久99精品久久久久久国产越南| 欧美日韩国产高清一区二区三区| 亚洲国产精品久久一线不卡| 欧美日韩高清一区| 日本欧美加勒比视频| 精品伦理精品一区| 国产激情精品久久久第一区二区| 久久精品欧美日韩精品| 北条麻妃一区二区三区| 亚洲四区在线观看| 欧美丝袜丝交足nylons图片| 日韩激情在线观看| 久久精品日产第一区二区三区高清版 | 91精品国产综合久久久久久久| 久久成人免费电影| 中文av一区二区| 欧美性淫爽ww久久久久无| 日韩不卡一区二区三区 | 一区二区三区四区乱视频| 欧美日韩午夜在线视频| 美女在线视频一区| 欧美经典三级视频一区二区三区| 97se亚洲国产综合自在线| 亚洲制服丝袜av| 亚洲精品在线观| 国产成人自拍网| 亚洲综合色成人| 精品人在线二区三区| 国产91精品欧美| 亚洲一区二区三区视频在线| 精品少妇一区二区三区免费观看| 成人av资源下载| 青青草国产精品亚洲专区无| 国产精品免费观看视频| 91精品国产高清一区二区三区| 国产九九视频一区二区三区| 亚洲在线观看免费| 精品88久久久久88久久久| 欧美午夜电影在线播放| 国产一区二区三区高清播放| 亚洲图片有声小说| 国产亚洲欧美一级| 欧美日韩国产精品成人| 99在线视频精品| 免费成人结看片| 一区二区三区蜜桃| 国产人妖乱国产精品人妖| 7777精品久久久大香线蕉| jvid福利写真一区二区三区| 久久成人18免费观看| 亚洲亚洲人成综合网络| 国产精品情趣视频| 精品美女一区二区| 91麻豆精品国产综合久久久久久| jlzzjlzz国产精品久久| 狠狠色狠狠色综合| 日韩精品福利网| 亚洲欧美日韩久久| 中文字幕一区二区三区不卡在线| 精品久久人人做人人爽| 欧美猛男gaygay网站| 青娱乐精品视频| 18欧美乱大交hd1984| 大尺度一区二区| 精品国产91久久久久久久妲己 | 91精品国产综合久久婷婷香蕉 | 国产一区二区三区四区五区美女| 播五月开心婷婷综合| 91色.com| 七七婷婷婷婷精品国产| 日韩你懂的在线观看| 丁香婷婷综合色啪| 亚洲欧美另类久久久精品| 欧美伦理视频网站| 91精品福利视频| 久久久五月婷婷| 亚洲精品国产a久久久久久 | 成人爽a毛片一区二区免费| 久久国产精品色| 热久久久久久久| 日韩激情视频在线观看| 亚洲成年人网站在线观看| 亚洲一区二区三区国产| 五月天激情综合| 日本不卡免费在线视频| 久久精品国产精品亚洲综合| 激情图区综合网| 丁香六月久久综合狠狠色| 成人午夜av在线| 一本在线高清不卡dvd| 欧美亚洲综合色| 日韩午夜在线观看| 久久综合久久综合亚洲| 国产日产欧美一区二区视频| 亚洲欧美怡红院| 亚洲二区在线观看| 亚洲一区在线电影| 麻豆中文一区二区| 东方欧美亚洲色图在线| 色婷婷精品久久二区二区蜜臂av | 亚洲一区欧美一区| 亚洲第一成人在线| 国产一区二区在线免费观看| 成人福利视频在线看| 欧美综合亚洲图片综合区| 欧美精品久久99| 国产色产综合色产在线视频 | 色老综合老女人久久久| 欧美一级欧美三级在线观看| 国产亚洲欧洲一区高清在线观看| 伊人夜夜躁av伊人久久| 石原莉奈在线亚洲二区| 国产成人aaa| 欧美性做爰猛烈叫床潮| 久久毛片高清国产| 亚洲精品老司机| 国内精品伊人久久久久av影院| 成人黄色电影在线| 欧美精品色综合| 国产欧美一区二区精品忘忧草 | 国产精品自拍av| 色视频欧美一区二区三区| 日韩精品中午字幕| 中文字幕中文字幕中文字幕亚洲无线| 亚洲影视在线播放| 国产成人精品一区二区三区四区 | 日本不卡不码高清免费观看| 成人黄色777网| 日韩午夜精品视频| 亚洲影视资源网| 成人app下载| 26uuu国产电影一区二区| 亚洲成av人**亚洲成av**| 国产99久久久国产精品免费看| 欧美日韩www| 亚洲人快播电影网| 国产成人亚洲综合a∨婷婷图片| 欧美丰满高潮xxxx喷水动漫 | 26uuu色噜噜精品一区| 亚洲第一av色| 色婷婷综合久久久久中文一区二区| 久久美女艺术照精彩视频福利播放| 午夜精彩视频在线观看不卡| 99久久精品99国产精品| 国产欧美一区二区精品性色超碰 | 久久久噜噜噜久噜久久综合| 免费看精品久久片| 欧美年轻男男videosbes| 亚洲九九爱视频| 成人av动漫在线| 国产精品天美传媒| 成人午夜电影网站| 中文成人av在线| 成人ar影院免费观看视频| 国产日韩精品一区二区三区| 韩日精品视频一区| 精品国产一区二区三区av性色| 日韩和欧美的一区| 欧美丰满一区二区免费视频| 亚洲444eee在线观看| 欧美日韩国产中文| 视频在线观看91| 日韩一区二区视频| 久久狠狠亚洲综合| 精品免费99久久| 国产在线播放一区|