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

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

?? fastcon.c

?? DSP信號處理源碼,包括數字信號處理課程中的基本源程序。
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***********************************************************************
FASTCON.C - 使用FFT實現快速卷積

該程序利用FFT實現快速卷積運算.
卷積實現一個35階FIR低通濾波器的響應分析, FIR濾波器參數存放在變量
fir_lpf35中, 輸入信號為兩個不同頻率的信號迭加.此濾波器的阻帶衰耗
為40dB , 3dB截頻為 0.25*fs.

使用子程序為:
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))
/* 35 point lowpass FIR filter cutoff at 0.2 */

  float  fir_lpf35[35] = {
  -6.849167e-003, 1.949014e-003, 1.309874e-002, 1.100677e-002,
  -6.661435e-003,-1.321869e-002, 6.819504e-003, 2.292400e-002,
   7.732160e-004,-3.153488e-002,-1.384843e-002, 4.054618e-002,
   3.841148e-002,-4.790497e-002,-8.973017e-002, 5.285565e-002,
   3.126515e-001, 4.454146e-001, 3.126515e-001, 5.285565e-002,
  -8.973017e-002,-4.790497e-002, 3.841148e-002, 4.054618e-002,
  -1.384843e-002,-3.153488e-002, 7.732160e-004, 2.292400e-002,
   6.819504e-003,-1.321869e-002,-6.661435e-003, 1.100677e-002,
   1.309874e-002, 1.949014e-003,-6.849167e-003
			  };
/* 35 point highpass FIR filter cutoff at 0.3 same as fir_lpf35
except that every other coefficient has a different sign */

  float  fir_hpf35[35] = {
   6.849167e-003, 1.949014e-003,-1.309874e-002, 1.100677e-002,
   6.661435e-003,-1.321869e-002,-6.819504e-003, 2.292400e-002,
  -7.732160e-004,-3.153488e-002, 1.384843e-002, 4.054618e-002,
  -3.841148e-002,-4.790497e-002, 8.973017e-002, 5.285565e-002,
  -3.126515e-001, 4.454146e-001,-3.126515e-001, 5.285565e-002,
   8.973017e-002,-4.790497e-002,-3.841148e-002, 4.054618e-002,
   1.384843e-002,-3.153488e-002,-7.732160e-004, 2.292400e-002,
  -6.819504e-003,-1.321869e-002, 6.661435e-003, 1.100677e-002,
  -1.309874e-002, 1.949014e-003, 6.849167e-003
			  };
/* 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)
{
  int          i, length1,length2,m,j, 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;     /* 信號長度 */
  length2 = 35;      /* 系統函數長度 */
  m = log2(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(4.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 (x[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 = 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");
  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++) filt[i].real = fir_lpf35[i];
  for (i = 0; i < length2; i++) signal[i]=filt[i].real;

  strcpy(title,"The Filter Impulse Response (h[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);
  for (i = 0; i < fft_length; i++) {
    tempflt  = filt[i].real * filt[i].real;
    tempflt += filt[i].imag * filt[i].imag;
    signal[i] = 10 * log10(MAX(tempflt,1e-14));
  }

  strcpy(title,"The FIR Filter FFT Result H(ejw)");
  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].real * filt[i].imag
			   + samp[i].imag * filt[i].real;
    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 Convolution");
  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 子程序

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品乱码久久久久久| 91蝌蚪porny九色| 久久久精品一品道一区| 成人av高清在线| 亚洲电影第三页| 国产日韩欧美精品综合| 色综合激情五月| 精品一区二区三区免费观看| 久久久精品国产99久久精品芒果| 97se狠狠狠综合亚洲狠狠| 无吗不卡中文字幕| 国产精品乱码人人做人人爱| 欧美一级免费观看| 一本一道波多野结衣一区二区| 日本怡春院一区二区| 中文字幕乱码一区二区免费| 欧美绝品在线观看成人午夜影视| 大胆亚洲人体视频| 香蕉久久一区二区不卡无毒影院| 亚洲欧美综合在线精品| 日韩视频一区二区在线观看| k8久久久一区二区三区| 九九在线精品视频| 艳妇臀荡乳欲伦亚洲一区| 久久久久久久久久看片| 色老汉一区二区三区| av福利精品导航| 国产麻豆精品一区二区| 五月天视频一区| 一区二区三区视频在线看| 久久久久久影视| 日韩视频一区二区在线观看| 色综合色综合色综合色综合色综合 | 91香蕉视频mp4| 国产精品一区在线观看乱码| 蜜桃久久精品一区二区| 一色屋精品亚洲香蕉网站| 国产精品欧美一区喷水| 国产人久久人人人人爽| 欧美刺激午夜性久久久久久久 | 99re热视频这里只精品| 国产乱国产乱300精品| 奇米一区二区三区av| 午夜成人免费视频| 亚洲欧美综合色| 一区二区三区日韩欧美精品 | 亚洲精品中文在线影院| 中文字幕av一区二区三区高 | 老司机午夜精品| 久久99精品久久久久| 免费成人美女在线观看.| 同产精品九九九| 亚洲成a人片综合在线| 亚洲午夜免费视频| 亚洲黄色av一区| 亚洲va欧美va天堂v国产综合| 午夜视频在线观看一区二区三区| 丝袜美腿成人在线| 国产在线一区二区综合免费视频| 成人午夜激情影院| 在线欧美一区二区| 91精品国产一区二区三区| 欧美va在线播放| 日韩毛片一二三区| 天堂精品中文字幕在线| 九色porny丨国产精品| 成人福利视频在线| 欧美性淫爽ww久久久久无| 欧美高清激情brazzers| 久久免费电影网| 亚洲精品欧美专区| 青青草国产成人av片免费| 国产成人综合亚洲网站| 色欲综合视频天天天| 91精品国产美女浴室洗澡无遮挡| 久久丝袜美腿综合| 一区二区三区在线视频免费观看| 久久精品国产在热久久| eeuss国产一区二区三区| 精品视频资源站| 日本一区二区免费在线| 亚洲国产精品人人做人人爽| 国产在线麻豆精品观看| 精品婷婷伊人一区三区三| 26uuu精品一区二区三区四区在线| 亚洲欧美日韩国产手机在线| 美洲天堂一区二卡三卡四卡视频| 丁香网亚洲国际| 51精品秘密在线观看| 国产精品美女久久久久高潮| 天天操天天色综合| 色综合色狠狠综合色| wwwwww.欧美系列| 亚洲综合精品自拍| 成人综合在线观看| 欧美一级免费观看| 一区二区三区**美女毛片| 国产成人综合自拍| 欧美一区二区三区四区高清| 日韩一区有码在线| 国产乱码精品1区2区3区| 6080亚洲精品一区二区| 18欧美乱大交hd1984| 精品一区在线看| 67194成人在线观看| 一区二区三区免费观看| 成人午夜精品一区二区三区| 日韩一卡二卡三卡| 亚洲高清在线视频| 色狠狠一区二区| 国产精品天天看| 国内成人精品2018免费看| 欧美日本一区二区三区| 一二三四区精品视频| 99久久精品免费观看| 国产亚洲婷婷免费| 国产一区二区美女诱惑| 欧美一级高清大全免费观看| 午夜亚洲福利老司机| 欧美色精品在线视频| 亚洲欧美区自拍先锋| 成人av网站在线观看免费| 国产三区在线成人av| 久久国产精品露脸对白| 日韩亚洲欧美在线观看| 日韩高清中文字幕一区| 51午夜精品国产| 日本免费在线视频不卡一不卡二| 欧美绝品在线观看成人午夜影视| 亚洲国产精品一区二区尤物区| 一本大道久久a久久精二百| 中文字幕一区二区三区乱码在线| 国产成人午夜电影网| 欧美极品少妇xxxxⅹ高跟鞋 | av亚洲产国偷v产偷v自拍| 久久久精品综合| 福利一区福利二区| 国产精品女上位| 成人在线综合网| 亚洲欧美一区二区视频| 色婷婷久久久亚洲一区二区三区| 亚洲靠逼com| 欧美日韩极品在线观看一区| 日韩电影在线一区二区三区| 欧美一区二区三区在线观看视频| 另类小说视频一区二区| 精品国产一区二区三区久久久蜜月 | 精品欧美乱码久久久久久 | 欧美日韩激情一区| 日韩精品午夜视频| 精品国产污网站| 国产一区二区看久久| 中国色在线观看另类| www.亚洲色图.com| 亚洲香蕉伊在人在线观| 日韩欧美一二区| 韩国女主播成人在线观看| 日本一区二区三区电影| 欧洲精品在线观看| 日本不卡一二三| 久久久久久久久久美女| av在线不卡电影| 亚洲一卡二卡三卡四卡无卡久久 | 国产福利一区二区三区| 综合欧美亚洲日本| 欧美精品三级日韩久久| 东方aⅴ免费观看久久av| 中文字幕日本不卡| 欧美日韩一区二区在线观看视频| 久久国产精品第一页| 国产精品久久久久久久久搜平片| 色88888久久久久久影院按摩| 日韩影院在线观看| 欧美激情资源网| 欧美精品日韩一本| 成人免费黄色在线| 日韩av一级片| 中文字幕一区二区三区乱码在线 | 成人毛片视频在线观看| 亚洲一区影音先锋| 久久久久久9999| 欧美亚州韩日在线看免费版国语版| 久久99精品久久久| 亚洲精品国久久99热| 日韩精品一区二区三区四区视频 | 亚洲已满18点击进入久久| 精品国产制服丝袜高跟| 91福利资源站| 粉嫩av一区二区三区在线播放| 亚洲成人动漫在线观看| 中文字幕的久久| 日韩精品一区二区三区swag| 日本精品一级二级| 国产精品一区二区三区四区| 亚洲国产精品久久艾草纯爱 | 精品综合免费视频观看| 一区二区三区高清在线| 国产精品私人自拍| 精品国产一区二区精华| 欧美日韩和欧美的一区二区|