通过离散傅里叶变换(DFT)实现希尔伯特变换。

Hilbert变换C语言实现学习。

Plan:五一前完成希尔伯特C语言编程,能与MATLAB 得出的结果相对应。

Hilbert变换原理

假设有一个离散时间信号s(n),s(n)的希尔伯特变换为:s^(n)
在这里插入图片描述
其中:在这里插入图片描述
在这里插入图片描-π<w<π述
-π<w<π

s(n)的解析信号为g(n)=s(n)+js^(n)

用DFT求离散信号s(n)的解析信号及其Hilbert变换

步骤如下:

  1. 对s(n)做DFT,的S(k),k=0,1,2,3…,N-1;

Win10+VS2017安装FFTW库

参考文章:

https://blog.csdn.net/alxe_made/article/details/84205377

第一步:下载FFTW预编译库,网址为:http://www.fftw.org/install/windows.html
本网页下载完成即可离开。
第二步:解压缩下载的预编译文件。
第三步:运行lib.exe。如下图:找到64位的vs工具。
在这里插入图片描述
点击打开,输入>lib.exe,回车运行,如下图。
在这里插入图片描述
第四步:切换到解压缩后的文件:fftw-3.3.5-dll64目录下,并执行以下命令,如图:

lib /machine:x64 /def:libfftw3-3.def
lib /machine:x64 /def:libfftw3l-3.def
lib /machine:x64 /def:libfftw3f-3.def

在这里插入图片描述
打开解压缩后的文件,发现刚才生成了三个.exp文件,三个.lib文件,如图:
在这里插入图片描述
第五步:将生成的文件复制到下图位置:
在这里插入图片描述

  1. 将我们E:\fftw-3.3.5-dll64下面的生成的库文件libfftw3-3.lib ,libfftw3f-3.lib ,libfftw3l-3.lib 拷贝到lib文件夹里面。
  2. 将E:\fftw-3.3.5-dll64盘下面fftw3.h放到include文件夹里面。
  3. 将E:\fftw-3.3.5-dll64下的libfftw3-3.dll、libfftw3f-3.dll、libfftw3l-3.dll复制到C:\Windows\SysWOW64
  4. 将E:\fftw-3.3.5-dll64下的libfftw3-3.dll、libfftw3f-3.dll、libfftw3l-3.dll也复制到C:\Windows\System32里面。

第六步:新建一个测试工程,输入以下代码:

#include "fftw3.h"  
#include <windows.h>
int main()
{
	fftw_complex *in, *out;
	fftw_plan p;
	int N = 8;
	int i;
	int j;
	in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
	out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
	for (i = 0; i < N; i++)
	{
		in[i][0] = 1.0;
		in[i][1] = 0.0;
		printf("%6.2f ", in[i][0]);
	}
	printf("\n");
	p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
	fftw_execute(p); /* repeat as needed*/
	for (j = 0; j < N; j++)
	{
		printf("%6.2f ", out[j][0]);
	}
	printf("\n");
	fftw_destroy_plan(p);
	fftw_free(in);
	fftw_free(out);
	system("pause");//暂停
	return 0;
}


第七步:配置一下工程属性,在工程->属性->配置属性->链接器->输入->附加依赖项中,修改如下图所示:
在这里插入图片描述
在这里插入图片描述
运行后得到结果:
在这里插入图片描述
完成添加FFTW库。

未完待续……

GitHub 加速计划 / be / bert
37.61 K
9.55 K
下载
TensorFlow code and pre-trained models for BERT
最近提交(Master分支:2 个月前 )
eedf5716 Add links to 24 smaller BERT models. 4 年前
8028c045 - 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐