比较两个正弦信号的幅值和相位差广泛应用于对比测试中,如与标准信号进行标定、滤波前后信号的比对、互感器的输出等方面。时域波形可以依靠示波器观察,幅值和相位信息需要频谱分析仪测定,但其仅能对一路信号进行测试。而对于相位差的测试,一般使用动态分析仪这样的高精度仪器进行分析。频谱分析仪和动态分析仪的价位较高,因此有必要使用基于采集卡的Labview开发这方面的测试功能。
Labview中有现成的信号处理的vi(图1),可以直接分析出信号的幅值和相位信息。对两个信号可以分别得到相关信息,然后做差。
频谱测试vi
由FFT的原理可以知道,经过FFT运算,采集获得的序列变成复数,有实部和虚部。而实部和虚部的平方再开方对应的是幅值,虚部除以实部在取反正切对应的就是相位。这样的幅值和相位有若干个点,是和采样点频率有关系的,但是每个点上的幅值和相位信息是相对应的。
对于单一正弦信号,如y=Asin(ωt+φ),检测幅值最大点对应的相位即可。其中用到了图2的vi,从相位值矩阵中找到最大值的维数。然后从相位矩阵中找到该维数的相位值。同理找出第2路信号的幅值和相位值。
数组最值vi
这种算法,如果测试有偏置的信号就无能为力了。比如信号的幅值为2V,而直流偏置为2.5V,那么检测到的幅值最大点永远是第一个直流点。观察到直流的维数为0,所以需要在应用算法之前,将直流成分去掉。需要注意的是,去掉直流对应的数据,相当于在矩阵中少了一维,在应用后续vi找最大值的维数后需要加1,再到相位矩阵中找到该维数的相位值。这样就实现了对有直流偏置的测量。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
数组索引vi 数组删除vi
如果是多个信号混合的测量,此算法将只能获得最大幅值对应的相位信息,其他信号的信息用类似的方法测试,这个还没有试过。但估计在实现知道信号成分的前提下好解决,如果是未知信号,因为去掉对应的数据后不能确定信号维数的处理方式而存在麻烦。建议使用检查到最大幅值然后在相应维数中加零的方式来解决。这个有兴趣的可以试一下。当然也可能会有其他vi或是方式来解决。
用户14172 2007-7-12 20:54
谢谢提醒,的确应该是“平方和再开方”。
这个用处蛮大的,不过针对不同信号,采样频率应该设置上有不同。
现在发现测幅值小的信号,特别是实际信号时,不太准。正在想办法改进。
ash_riple_768180695 2007-7-12 17:20
"而实部和虚部的平方再开方对应的是幅值",是不是应该改为“平方和再开方”。
你这种方法是不是对信号的频谱进行分析,和频谱分析仪的原理差不多?
如果能够把幅值、相位对应地画成二维图像,就可以得到信号的频谱图。有几路画几路,就能实现多路信号的比较了。
除了实时性差些,这样的方法可以代替频谱分析仪。