gefei1989 发表于 2012-4-12 10:18

BEMD的C语言程序编写过程(只探讨程序编写过程,不共享程序)

    半年多没有来网站了,现在已经完成了自己的项目,上来分享下自己的经验。最开始研究EMD的时候,振动联盟给了我很大帮助,多谢各位,尤其是版主陈露(:lol不知道名字是不是这么写)。 去年6月份之前一直是用matlab研究emd和bemd,论坛上都可以找到程序。遇到问题,耐心的版主和热心朋友也会帮忙解答:handshake。下面讲讲自己写程序的经历。    网上关于bemd的程序只能处理最大30000个像素,而导师要求做实验时需要处理256*256的图像,这个期间又有很多朋友说matlab毕业之后几乎没什么用,想找到工作还是需要C语言,导师这个时候也建议我用C语言自己写程序,脑袋一热,果断转移到C语言。
    不夸张的说,我当时的C语言基础基本为0,大学学过一点数据结构,也过了计算机等级考试二级C,不过还从来没有独立编写过一个像样的程序,顶多也就是一些1+1=2这样的。开始写程序的时候豪情壮志,过了一个星期就不知所措了,因为一个星期的时间都没有搞清楚用C语言还是C++,根本无从下手。又过了一个星期,偶然在网上看到了一段关于读取和存储图像的程序,突然有了灵感,BEMD毕竟只是算法,并且也不能说特别的复杂,只要提取了像素点,后面的处理不就有方向了吗?
    带着这样的思路,开始了对程序的探索。先是成功读取像素点,然后尝试着对像素点做一些简单的线性变换,最后在7月底成功读取了图像的极大值和极小值点,算是一个阶段性的胜利。
    接下来是关于径向基函数插值。这个函数之前一点都不了解,网上搜集了几篇关于RBF的论文,仔细研究了一个星期,决定用MQ函数,继续写程序。现在看来,径向基函数也很简单,只需要解一个方程组就可以了,网上有现成关于解方程组的程序。在8月中旬程序整体的框架已经出来了。这个时候出现了每个程序新手都会出现的问题。
    我处理的是256*256的图像,数据量很庞大,用到了很多指针,再加上图像在内存中是倒置的,所以在接下来的半个月,几乎每天都是在找bug,掉入指针一个又一个的陷阱。这段时间需要足够的耐心。很庆幸,坚持了下来,8月底,总算把程序完成了,自己都感觉有点难以置信。
   
    下面是处理的图像结果,256*256lena图像,只分解了三个图像,时间在5分钟左右。
                                    

               


    写这个帖子,不是炫耀什么。看到论坛上有很多朋友在找程序,也是想借自己的经历,建议大家,如果有时间,最好自己去写。基础差没关系,只要够耐心,够努力,有坚定的信心就一切没问题。欢迎大家跟我讨论有关程序的任何事情,只是不共享程序。

817huang 发表于 2012-4-14 12:41

谢谢楼主,受教了,我的经历跟您有点类似,看了一些国内的HHT文章,和黄的几篇论文,感觉理论已经了解了一些,准备编程去做应用,但又无从下手,先是想读懂网上那些现成的代码,又复习了一下matalab语言,感觉还是很吃力,觉得先要自己编emd程序,火候还不够,还得精学matalab,但又感觉matalab对于找工作确实没多大用处,所以想改用java编写···我也是做图像的····谢谢

gefei1989 发表于 2012-4-16 10:41

回复 2 # 817huang 的帖子

:lol我对java不太懂,不过程序语言都是相通的,但愿我的经历能帮上你的忙

817huang 发表于 2012-4-16 10:53

回复 3 # gefei1989 的帖子

恩恩 我刚刚研究生一年级,新手中的新手 希望您不吝赐教谢谢

gefei1989 发表于 2012-4-16 11:10

回复 4 # 817huang 的帖子

我也不过研二,有问题共同讨论,:handshake

817huang 发表于 2012-4-17 10:44

回复 5 # gefei1989 的帖子

您知道如何使用网上的BEMDmatalab程序么?需要配置什么么?

gefei1989 发表于 2012-4-17 18:17

回复 6 # 817huang 的帖子

在我发的另一个帖子中有关于MATLAB程序BEMD的详细叙述,求助二维BEMD的使用,你搜索下,如有问题,在那个帖子中讨论。

817huang 发表于 2012-4-17 20:54

回复 7 # gefei1989 的帖子

不知你方便加一下么?我的:837743242不方便也没关系 呵呵

晓桥小生 发表于 2012-11-23 12:35

{:{10}:}{:{39}:}{:{39}:}

pingxuyufeng 发表于 2012-11-25 21:00

恩 学习了

luweiyun 发表于 2013-8-28 19:24

楼主给力 向你学习
页: [1]
查看完整版本: BEMD的C语言程序编写过程(只探讨程序编写过程,不共享程序)