使用fftw3-3进行余弦变换
余弦变换的主要型式也有4种。
基于fftw3-3,定义两个函数:
- dct
- idct
其原型如下:
inline void dct(long,long,double*,double**,int);
inline void idct(long,long,double*,double**,int);
两个函数的参数说明如下:
- 第一个参数表示数据的行数
- 第二个参数表示数据的列数
- 第三个参数表示输入的数据
- 第四个参数表示输出的数据
- 第五个参数表示余弦变换的型式,可选1,2,3,4,当其不为这四个数字时,默认为2。也就是最常用的二型余弦变换
示例如下:
#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;
}
结果如下:
输入数据:
+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
数据销毁!
相关下载:




浙公网安备 33010602011771号