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

Hilbert变换C语言实现学习。

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

Hilbert变换原理

假设有一个离散时间信号s(n),s(n)的希尔伯特变换为:s^(n)

其中:

-π<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库。

未完待续……

Hilbert变换C语言实现学习相关推荐

  1. Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码

    Python语言编程学习:文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码 目录 文件路径变量修改,利用os模块固定文件父路径,变换文件子路径实现代码

  2. python 希尔伯特变换_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...

    多谢董老师,董老师是个好老师! 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背不过,还是放放吧. 最近厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...

  3. 《拆解 XLNet 模型设计,回顾语言表征学习的思想演进》

    深度解析 XLNet 作者: 追一科技 AI Lab 研究员 Tony 在预训练语言模型 BERT 对自然语言处理的冲击还未平息时,CMU 和 Google 的研究员又放出了一个猛料:在 20 多项任 ...

  4. python 波形包络线_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...

    多谢董老师,董老师是个好老师! 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背不过,还是放放吧. 最近厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...

  5. c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...

    [摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...

  6. R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

    本文转载自"R语言中文社区",己获授权. 作者简介Introduction taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github. ...

  7. 【 FPGA 】FIR滤波器之 Hilbert 变换的实现

    上篇博文:半带 FIR 滤波器(Half-band FIR Filter) 希尔伯特变换在数字通信系统中有很多种使用方式.理想的希尔伯特变换为正频率提供90度的相移,为负频率提供-90度的相移. 希尔 ...

  8. c语言struct_学习了C语言之后还是感觉不会编程,应该怎么办?其实你想错了!...

    其实对于程序而言,C语言抑或着C++.Java等其他程序语言只是用于表达你的想法的一个工具.就像让我们以建筑为例,画图是一个基本功,但是画什么才是核心所在.那么,今天我们以一个设计一个RPG(角色扮演 ...

  9. 不会c语言能学习python_为什么很多人学不会C语言?学霸说:你要是像我一样学肯定能行!...

    为什么很多人学不会C语言?C语言作为一门入门级语言,是大多数编程者的学习首选,它不是应该是一门容易上手的编程语言吗?而且大学都会有老师教的,为什么很多人学不好C语言呢?其实笔者认为学不好C语言的主要原 ...

  10. 计算机二级c在哪里学习,2017年计算机二级C语言考点学习

    2017年计算机二级C语言考点学习 学习是把知识能力思维方法等转化为你的私有产权的重要手段,是"公有转私"的重要途径.以下是百分网小编整理的2017年计算机二级C语言考点学习,欢迎 ...

最新文章

  1. Django博客系统注册(图形验证码接口设计和定义)
  2. 全球及中国纳米材料行业竞争格局及发展规模预测报告2021年版
  3. CUDA程序编写具体参数设置
  4. linux FAQ(zz)
  5. oracle中v$database视图详解
  6. 将内存消耗减少20倍
  7. PHP读取某站点的链接的函数
  8. matlab卷积画图,基于MATLAB的卷积演示系统课程设计
  9. Java EE重命名为Jakarta EE:Java EE Guardians与Oracle的分歧
  10. 【毕业设计】jsp+sql毕业生招聘系统毕业设计(系统+论文+英文文献+综合材料)
  11. 前台数据数组转化为json数据
  12. python3 读取文件夹的文件标题,提取小数,并计算数字和
  13. shiro会话监听_Shiro权限控制_(二)_session
  14. 极大似然估计(MLE)、最大后验估计(MAE)
  15. 安装罗斯蒙特HART475协议中文版手操器的系统卡和电池
  16. 关闭appleid双重认证_iPhone 丢失怎么办?开启双重认证就能解决!
  17. excel宏 批量生成返回目录
  18. 深度学习入门(一)快速建立自己的图片数据集
  19. 代码关联Git远程仓库笔记
  20. typedef和typename的区别

热门文章

  1. 改进的协同过滤推荐算法
  2. 数字电路基础知识——CMOS门电路 (与非门、或非、非门、OD门、传输门、三态门)
  3. 小米路由器mini R1C R1CM openwrt源 换源
  4. beoplay耳机序列号查询_怎么鉴别 BO E8耳机真伪?【转】
  5. RoboWare Studio:简介
  6. Java设计模式学习记录-模板方法模式
  7. html常用字体代码大全,HTML常用字体代码(HTML is a common font code).doc
  8. python网络爬虫网易云音乐guihub_Python开发的一个命令行的网易云音乐
  9. mysql 分组求和_MySQL 分组最值、分组均值、分组求和
  10. NOIP2016普及组初赛难点整理