如何求取一个序列的相位(matlab)

23 篇文章 10 订阅
5 篇文章 0 订阅

在大部分场景下,我们一般只看重信号的幅值大小,但有时也需要考虑相位信息,因此需要会求取信号的相位关系。matlab中求信号相位的一些方法。

(1)物理意义:
theta = angle(z)为复数数组z的每个单个元素返回区间[-pi,pi]中的相位角。theta中的角度表示为 z = abs(z).* exp(i*theta).

(2)计算步骤:

首先创建一个复数,并计算其幅值和相位。

z = 2*exp(i*0.5)
r = abs(z)
theta = angle(z)

z =

   1.7552 + 0.9589i


r =

     2


theta =

    0.5000

再创建一个由频率为 15Hz 和 40Hz 的两个正弦波组成的信号。
第一个正弦波的相位为-pi/4,第二个正弦波的相位为pi/2。
以 100 Hz的频率对信号进行一秒钟的采样。

fs = 100;
t = 0:1/fs:1-1/fs;
x = cos(2*pi*15*t - pi/4) - sin(2*pi*40*t);
y = fft(x);
z = fftshift(y);

ly = length(y);
f = (-ly/2:ly/2-1)/ly*fs;

stem(f,abs(z))
xlabel 'Frequency (Hz)'
ylabel '|y|'
grid

请添加图片描述
最后计算变换的相位,删除小幅值变换值。将相位绘制为频率函数

tol = 1e-6;
z(abs(z) < tol) = 0;

theta = angle(z);

stem(f,theta/pi)
xlabel 'Frequency (Hz)'
ylabel 'Phase / \pi'
grid

请添加图片描述
很显然从上图中可以清楚地看出该信号在15Hz处相位为-pi/4,40Hz处相位为pi/2。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq-120

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值