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

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

?? fastcor.c

?? 本文件包含三個小程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***********************************************************************
FASTCOR.C - 使用FFT實現快速相關

該程序利用FFT實現快速相關運算.
輸入序列為兩個具有相關性的信號,一個輸入信號
為兩個不同頻率的信號迭加而成,另一個輸入信號
為其中一個頻率的單頻信號.若兩個輸入信號相同
則為自相關.

使用子程序為:
fft            基2 DIF FFT 子程序
ifft           基2 DIF IFFT 子程序
log2           基2求對數函數
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);
 void draw_image(double *x,int m,char *title1,char *title2,
		char *xdis1,char *xdis2,int dis_type);
/********************************************************/
void main(void)
{
  unsigned int i, length1,length2,m,fft_length;
  char	       title[80],tmp[20];
  double       *signal;
  double       a,tempflt;
  COMPLEX      *samp, *filt;

/* Set the input data specified by the user */

  length1 = 300;     /* 信號1 長度 */
  length2 = 50;      /* 信號2 長度 */
  m = log2(2*MAX(length1,length2));
  fft_length = 1<<m;
  signal = (double *) calloc(fft_length,sizeof(double));
  if(!signal){
    printf("\n  Could not allocate sample memory.\n");
    exit(1);
  }

  for (i = 0; i < length1; i++) {
      signal[i] = cos(6.0*1.0*PI*(double)i*2.0/length1);
      printf("*");
  }
  for (i = 0; i < length1; i++) {
     signal[i] = signal[i]+cos(138.0*PI*(double)i*2.0/length1);
     printf("*");
  }

  strcpy(title,"The Input Signal Data (x1[n])");
  draw_image(signal,length1,title,"The Magnitude value","0",
	     itoa(length1,tmp,10),0);

  samp = (COMPLEX *) calloc(fft_length, sizeof(COMPLEX));
  if(!samp){
    printf("\n  Could not allocate sample memory.\n");
    exit(1);
  }

  for (i = 0; i < length1; i++) samp[i].real = signal[i];

  fft(samp,m);

/* Display the log magnitude of the FFT */
  a = (double)length1*length1;
  for (i = 0; i < fft_length; i++) {
    tempflt  = samp[i].real * samp[i].real;
    tempflt += samp[i].imag * samp[i].imag;
    tempflt = tempflt/a;
    signal[i] = 10 * log10(MAX(tempflt,1.e-10));
  }

  strcpy(title,"The Input Data FFT Result X1[m]");
  draw_image(signal,fft_length,title,"The Magnitude (dB)","0",
	     itoa(fft_length,tmp,10),0);

/* Zero fill the filter to the sequence length */
  filt = (COMPLEX *) calloc(fft_length, sizeof(COMPLEX));
  if(!filt){
    printf("\n  Could not allocate filter memory.\n");
    exit(1);
  }

  for (i = 0; i < length2; i++) signal[i] = 0;
  for (i = 0; i < length2; i++) {
      signal[i] = cos(1.0*PI*(double)i*2.0/length2);
      filt[i].real = signal[i];
      printf("*");
  }

  strcpy(title,"The Input Data (x2[n])");
  draw_image(signal,length2,title,"The Magnitude value","0",
	     itoa(length2,tmp,10),0);

/* FFT the zero filled filter impulse response */

  fft(filt,m);

  a = (double)length2*length2;
  for (i = 0; i < fft_length; i++) {
    tempflt  = filt[i].real * filt[i].real;
    tempflt += filt[i].imag * filt[i].imag;
    tempflt = tempflt/a;
    signal[i] = 10 * log10(MAX(tempflt,1e-10));
  }

  strcpy(title,"The Input Data FFT Result X2[m]");
  draw_image(signal,fft_length,title,"The Magnitude (dB)","0",
	     itoa(fft_length,tmp,10),0);

/* Multiply the two transformed sequences */

  for (i = 0; i < fft_length; i++) {
    tempflt = samp[i].real * filt[i].real
			   + samp[i].imag * filt[i].imag;
    samp[i].imag = samp[i].imag * filt[i].real
			   - samp[i].real * filt[i].imag;
    samp[i].real = tempflt;
  }

/* Inverse fft the multiplied sequences */

  ifft(samp,m);

/* Display the result */
  for (i = 0; i < length1+length2; i++) signal[i] = samp[i].real;

  strcpy(title,"The Result of Correlation");
  draw_image(signal,length1+length2,title,"The Magnitude Value","0",
	     itoa(length1+length2,tmp,10),0);
  free(signal);
  free(samp);
  free(filt);
}

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

輸入參數:
	 COMPLEX *x : FFT 輸入和輸出數據區指針;
	      int m : FFT 長度 ( length = 2^m );
輸出參數:
	 輸出數據放在 x 所指的輸入數據區.
	 無輸出參數.

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;
	}
    }
}

/************************************************************************
ifft - 基2 DIF IFFT 子程序

輸入參數:
	 COMPLEX *x : IFFT 輸入和輸出數據區指針;
	      int m : IFFT 長度 ( length = 2^m );
輸出參數:
	 輸出數據放在 x 所指的輸入數據區.
	 無輸出參數.

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久久a久久精品亚洲| 日本麻豆一区二区三区视频| 玉米视频成人免费看| 香蕉影视欧美成人| av在线播放成人| 精品久久久久久亚洲综合网 | 欧美成人性福生活免费看| 亚洲国产高清aⅴ视频| 青青草国产精品97视觉盛宴| 日本久久一区二区三区| 国产色综合久久| 人妖欧美一区二区| 欧美综合视频在线观看| ...av二区三区久久精品| 国内精品伊人久久久久av一坑| 欧美视频在线不卡| 亚洲特级片在线| 成人开心网精品视频| 久久久久久**毛片大全| 黄一区二区三区| 欧美一区二区三区视频在线 | 国产精品久久久久一区二区三区共 | 亚洲成年人网站在线观看| 成人中文字幕电影| 国产日韩欧美一区二区三区乱码 | 亚洲综合免费观看高清完整版| 国产91精品一区二区麻豆网站| 日韩精品一区国产麻豆| 视频一区国产视频| 欧美日韩久久一区| 亚洲国产精品影院| 欧美亚洲综合色| 中文字幕一区二区在线播放| 不卡视频在线看| 国产日韩精品一区二区浪潮av | 日本一区免费视频| 成人中文字幕在线| 国产精品美女www爽爽爽| 成人精品小蝌蚪| 中文字幕一区二区三| 国产一区在线观看麻豆| 久久久久久久久久美女| 国模无码大尺度一区二区三区| 精品粉嫩超白一线天av| 国产白丝网站精品污在线入口| 久久精品视频在线免费观看| heyzo一本久久综合| 一区二区三区四区中文字幕| 欧美视频精品在线观看| 亚洲一二三四区| 日韩亚洲欧美综合| 国内精品伊人久久久久av影院| 国产日韩精品久久久| 在线视频国内一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品嫩草影院久久| 99在线视频精品| 天天综合网 天天综合色| 精品美女一区二区| 成人小视频免费观看| 亚洲一区二区偷拍精品| 日韩精品一区二区三区四区视频 | 99免费精品在线| 三级欧美在线一区| 国产偷国产偷亚洲高清人白洁| 91视频在线看| 久99久精品视频免费观看| 欧美国产一区二区在线观看| 色狠狠桃花综合| 狠狠色狠狠色综合| 亚洲精品视频在线观看网站| 日韩欧美电影在线| 91美女视频网站| 九九视频精品免费| 午夜欧美视频在线观看| 欧美电视剧免费全集观看| 99国产精品国产精品毛片| 日本午夜精品视频在线观看| 日韩一区在线免费观看| 欧美一卡二卡在线| 色88888久久久久久影院按摩| 国产一二三精品| 日本特黄久久久高潮| 亚洲色图丝袜美腿| 国产亚洲一本大道中文在线| 欧美巨大另类极品videosbest | 国产精品久久久久影院| 日韩午夜小视频| 91国产免费观看| 风间由美一区二区av101| 一区二区三区在线观看国产| 中文字幕欧美日韩一区| 日韩精品一区二区三区中文精品| 91久久精品一区二区三区| 国产成人h网站| 国产综合久久久久影院| 日韩福利视频网| 亚洲老司机在线| 日本一区二区三区国色天香| 精品国产成人系列| 日韩欧美国产三级| 欧美精品丝袜久久久中文字幕| 91麻豆精品在线观看| 成人午夜看片网址| 国产成人av一区二区三区在线| 免费成人在线观看视频| 三级在线观看一区二区| 日韩精品三区四区| 天堂va蜜桃一区二区三区漫画版| 亚洲精品久久7777| 一区二区三区高清| 亚洲综合色区另类av| 亚洲国产成人tv| 亚洲国产三级在线| 日日夜夜精品免费视频| 天天亚洲美女在线视频| 日韩中文字幕1| 日韩av网站在线观看| 欧美aaaaaa午夜精品| 亚洲大片精品永久免费| 日韩高清在线一区| 极品少妇一区二区| 精品影视av免费| 日本色综合中文字幕| 美女视频免费一区| 国产一区二区三区美女| 成人黄页在线观看| 色综合久久久久久久久| 欧美日韩久久久久久| 欧美一卡2卡三卡4卡5免费| 欧美一卡二卡在线观看| 久久久久久免费网| 亚洲天堂免费看| 亚洲一区二区三区国产| 蜜臀av一区二区| 岛国精品在线观看| 欧洲国产伦久久久久久久| 欧美日韩精品一区视频| 精品久久久久久综合日本欧美| 欧美国产精品一区二区| 一区二区三区在线不卡| 免费在线视频一区| 国产成人免费9x9x人网站视频| 99热99精品| 欧美一级艳片视频免费观看| 国产日韩精品一区| 亚洲h动漫在线| 国产成人免费网站| 欧美特级限制片免费在线观看| 亚洲精品一区二区三区精华液| 中文字幕中文乱码欧美一区二区| 亚洲国产婷婷综合在线精品| 国产精品综合一区二区| 欧美在线观看一二区| 精品欧美乱码久久久久久| 亚洲精品日韩综合观看成人91| 久久成人久久爱| 色婷婷综合视频在线观看| 日韩欧美国产午夜精品| 亚洲女性喷水在线观看一区| 激情综合亚洲精品| 在线欧美日韩精品| 国产欧美一区二区精品性| 午夜激情综合网| av亚洲产国偷v产偷v自拍| 日韩色视频在线观看| 亚洲免费视频中文字幕| 国产成人在线视频网站| 91精品国产综合久久福利软件| 国产精品成人在线观看 | 午夜精品久久久久久久99樱桃| 国产成人av影院| 日韩一级视频免费观看在线| 一区二区在线看| 成人性生交大片免费看在线播放| 日韩一级黄色大片| 午夜电影网一区| 色94色欧美sute亚洲线路一ni | 午夜不卡av在线| 色94色欧美sute亚洲线路一久| 国产精品嫩草久久久久| 国内精品视频一区二区三区八戒| 欧美精品日韩一区| 亚洲午夜视频在线| 色猫猫国产区一区二在线视频| 中文在线资源观看网站视频免费不卡| 奇米色777欧美一区二区| 欧美日韩久久不卡| 亚洲国产精品久久人人爱蜜臀| 91免费国产在线| 国产精品欧美久久久久无广告| 国产精品资源在线看| 精品久久久网站| 韩国v欧美v日本v亚洲v| 欧美xxxxxxxx| 国内外成人在线| 久久久久88色偷偷免费| 国产精品91一区二区| 久久久久国产精品麻豆ai换脸 | 欧美中文字幕一区二区三区亚洲|