怎么样求初相角??
t=0:0.0001:6;s1=sin(2*pi*50*t+pi/4);对于这样一个正弦信号,怎样用程序实现它的初相位的求取?记的angle是求初始相位的?但是求出的是一个1*6000的矩阵,现在不知道怎么样实现可以求取这个pi/4 1*6000的矩阵是什么东东? 用angle(s1)直接求出的相位 angle函数使用错误,用help angle看一下。不是能用angle(s1)就能直接求出的初始相位的。 我用数值仿真试过了,真如lz所说,出来的是一个以原数据长度为长度的向量。help angle里面的例子也是这样子显示的。所以angle(s1)出来的应该是一个相位矩阵。
至于求初相位,应该是fft以后对该频率点用angle求。
例如,令s1=cos(2*pi*f0*t+p0),则求y=fft(s1),假设目标频率f0的点在y中对应为y(100),
则angle(y(100))可以得出p0。lz是正弦,应该注意正余弦的变化,有个pi/2相位差。
总结一句:angle是对每一个复数求向位,对于变量,是求变量每一个值的相位,所以结果会是一个向量。同时anlge求出的结果是以cos计的。注意变换。
ps:以上只是一家之言,恐有不对不全之处,请大家补充。记得论坛有类似的加精文章,可以看看。
[ 本帖最后由 eight 于 2008-3-24 16:28 编辑 ] 我自己现在认为:对于这种正弦信号,MATLAB中根本就没有提供直接求取相位的命令,要想在时域计算相位,必须要结合过零点比较法或者正弦波参数法计算.楼上说的也对,ANGLE不能对实信号直接求取初始相位.
[ 本帖最后由 kevin19821 于 2008-3-21 10:40 编辑 ] 帖一个原来论坛的帖子,希望给楼主一点提示:
我老师曾告诉我傅立叶变换的实质是余弦分解,傅立叶级数是正弦分解,所以它们俩的结果在相位上会相差90度。
但我觉得说傅立叶变换的实质是余弦分解并不那么确切,它实质还是复谐波的分解,即分解成exp(j*2*pi*f*t)的和的形式。
至于你的问题,这个式子足以说明问题了
sin(2*pi*f*t+ph)=(exp(j*ph)*exp(j*2*pi*f*t)-exp(j*-ph)*exp(j*-2*pi*f*t))/(2j)
=(exp(j*(ph-pi/2))*exp(j*2*pi*f*t)-exp(j*(-ph-pi/2))*exp(j*-2*pi*f*t))/2;
至于为什么是余弦分解,你可以这样看。
用欧拉公式:
cos(2*pi*f*t+ph)=(exp(j*ph)*exp(j*2*pi*f*t)+exp(j*-ph)*exp(j*-2*pi*f*t))/2;
sin(2*pi*f*t+ph)=(exp(j*ph)*exp(j*2*pi*f*t)-exp(j*-ph)*exp(j*-2*pi*f*t))/(2j)
=(exp(j*(ph-pi/2))*exp(j*2*pi*f*t)-exp(j*(-ph-pi/2))*exp(j*-2*pi*f*t))/2;
傅立叶变换是把信号分解成exp(j*2*pi*f*t)的和的形式,而且一般取正频率exp(j*2*pi*f*t)
显然按余弦信号的结果得到的相位是ph,而按正弦的结果是ph-pi/2,差了90度
说傅立叶变换是余弦分解当然是不严谨的说法,只是在分析实信号的时候通常都可以这样认为。
页:
[1]