使用fftw3-3进行余弦变换

使用fftw3-3进行余弦变换

余弦变换的主要型式也有4种。
基于fftw3-3,定义两个函数:

  • dct
  • idct

其原型如下:

Source code    
inline void dct(long,long,double*,double**,int);
inline void idct(long,long,double*,double**,int);

两个函数的参数说明如下:

  1. 第一个参数表示数据的行数
  2. 第二个参数表示数据的列数
  3. 第三个参数表示输入的数据
  4. 第四个参数表示输出的数据
  5. 第五个参数表示余弦变换的型式,可选1,2,3,4,当其不为这四个数字时,默认为2。也就是最常用的二型余弦变换

示例如下:

Source code    
#include <stdlib.h>
#include <stdio.h>
#include <myfft.h>
 
int main() {
	int m=4;//选择余弦变换的型式,可选四种:1,2,3,4
	long nr = 5, nc = 3;
	double *in = NULL;
 
	printf("\n输入数据:\n");
	uniform(nr, nc, &in);//均匀分布的随机数组,nr行,nc列
	displn(nr, nc, in);//输出实数据到控制台
 
	printf("\n执行变换:\n");
	dct(nr, nc, in, &in,m);
	displn(nr, nc, in);//输出数据到控制台
 
	printf("\n执行逆变换:\n");
	idct(nr, nc, in,&in,m);
	displn(nr, nc, in);
 
	printf("\n数据销毁!\n");
	free(in);
 
	return 0;
}

结果如下:

Source code    
输入数据:
+0.665991 +0.652206 +0.687226
+0.318864 +0.628899 +0.208088
+0.152283 +0.909624 +0.334874
+0.426312 +0.057722 +0.228220
+0.020685 +0.132605 +0.686059 
 
执行变换:
+7.751730 +0.727275 +0.424047
-2.557367 -0.560205 +0.711645
+0.542580 -1.220559 +0.473374
-0.005986 +3.560370 -3.475942
+3.334425 -0.617914 +0.826475 
 
执行逆变换:
+0.665991 +0.652206 +0.687226
+0.318864 +0.628899 +0.208088
+0.152283 +0.909624 +0.334874
+0.426312 +0.057722 +0.228220
+0.020685 +0.132605 +0.686059 
 
数据销毁!

相关下载:

myfft

 

posted @ 2011-08-31 06:33  libzhouxi  Views(1030)  Comments(2)    收藏  举报