原创 LabVIEW实现Walsh变换

2007-2-22 20:30 3030 4 4 分类: 测试测量

    Fourier变换是目前信号与系统分析中的主要工具,但在电信技术发展史上,非正弦信号的研究与应用也受到过重视,目前由于数字技术和计算机科学的迅速发展,利用开关元件产生和处理数字信号比较简便,因此类似于WalshHaar以及Rademacher函数重新引起了重视,它们只取两个数值,同时它们符合正交特性。LV本身也是有对于Walsh变换的现成VI可供使用的,但本文利用LV从原理上进行重新编写VI,从而实现对任意周期函数的Walsh变换。


        Walsh的三角函数定义如下式:


   82bef459-08ef-4606-9d5b-293f6a02433b.JPG


<?xml:namespace prefix = v />       k的二进制表示式为


    47099048-98dc-4e7f-9a25-56869d55ec21.JPG


 


       实现Walsh函数的VI程序如下图:


点击看大图


Walsh Function by t .vi


 


 


       整个程序根据上式来计算的,其中值得一提的是对于一个整数k进行2进制分解,可以按如图中红色区域的方法方便地得出。这个可能大多数人都知道,但是我使用LV用了差不多1年多后才知道能够这么处理的,之前都是自己用For来做的,如果你没想过或找不到这个Number to Boolean Array,是不太可能知道的。这一方面是LV的魅力所在,另一方面这也是LV需要改进的地方。


       Walsh变换与Fourier变换类似,公式如下,对于xt),周期为1,可得:


8f6bbbd3-76b6-4c06-ab61-1d812b6cbec1.JPG


       其中:


fd822d9a-1d29-480f-ab16-71bfe46afb4d.JPG


       LV中实现转换也相当简单,如下图:


点击看大图


 


 


     其中红色区域是依靠循环进行近似积分,除此之外,还可以用专门的积分VI进行,如下图所示:


61b4303e-fc8c-4df5-a2b2-96cf2d06871f.JPG


    下图是用Walsh变换将Cos函数进行转换的例子,白线为原信号(Cos信号),红色为经过Walsh变换后得到的曲线,下图为相应的误差,Walsh阶数可调。


点击看大图


 


       虽然整个例子的技术含量不高,但是对于一些信号处理的方法,如果能够自己用LV来实现,会使得编程更加灵活,从而减少对现成VI的依赖,这在各个方面都是有益处的。


    rar

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条