利用Hilbert变换进行相位调制信号的解调

1. 相位调制信号

相位调制中,相位信息叠加到载波上,数学表达式如下:

其中,是原始信号,f_c是载波频率,\beta是载波相位,A是载波幅值。

并且,f_c>>f_m.

调制信号x(t)可以简化成如下形式:

其中,是瞬时相位。

 2,相位调制信号的解调

 

为了从调制信号x(t)中解调出原始信号m(t),可以将实值信号x(t)变成解析信号z(t),然后求解z(t)的瞬时相位,就得到了,再从瞬时相位中减去2{\pi}f_ct+\beta,最终就可以得到原始信号

那么问题来了,如果收端预先不知道载波频率和相位,那么2{\pi}f_ct+\beta该怎么求解呢?

注意到f_c>>f_m,因此,可以近似为关于t的一条直线。如下图所示。

 

 因此,可以用一阶多项式近似的方法求解出2{\pi}f_ct+\beta

3,Matlab代码和图示

 代码如下:

%Demonstrate simple Phase Demodulation using Hilbert transform
pkg load signal;

clearvars; clc;
fc = 210; %carrier frequency
fm = 10; %frequency of modulating signal
alpha = 1; %amplitude of modulating signal
theta = pi/4; %phase offset of modulating signal
beta = pi/5; %constant carrier phase offset
receiverKnowsCarrier= 'False';
%Set True if receiver knows carrier frequency & phase offset

fs = 8*fc; %sampling frequency
duration = 0.5; %duration of the signal
t = 0:1/fs:duration-1/fs; %time base

%Phase Modulation
m_t = alpha*sin(2*pi*fm*t + theta); %modulating signal
phi_t = 2*pi*fc*t + beta + m_t;
x = cos(phi_t); %modulated signal

figure(); subplot(2,1,1); plot(t,m_t) %plot modulating signal
title('Modulating signal'); xlabel('t'); ylabel('m(t)')
subplot(2,1,2); plot(t,x) %plot modulated signal
title('Modulated signal'); xlabel('t');ylabel('x(t)')

%Add AWGN noise to the transmitted signal
nMean = 0; nSigma = 0.1; %noise mean and sigma
n = nMean + nSigma*randn(size(t)); %awgn noise
r = x + n; %noisy received signal

%Demodulation of the noisy Phase Modulated signal
z= hilbert(r); %form the analytical signal from the received vector
inst_phase = unwrap(angle(z)); %instaneous phase

%If receiver knows the carrier freq/phase perfectly
if strcmpi(receiverKnowsCarrier,'True')
  offsetTerm = 2*pi*fc*t+beta;
else %else, estimate the subtraction term
  p = polyfit(t,inst_phase,1);%linearly fit the instaneous phase
  %re-evaluate the offset term using the fitted values
  estimated = polyval(p,t); offsetTerm = estimated;
end
demodulated = inst_phase - offsetTerm;
figure(); plot(t,demodulated); %demodulated signal
title('Demodulated signal'); xlabel('n'); ylabel('\hat{m(t)}');

 图示如下:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值