我必须使用 matlab 分析已用 QPSK 调制的信号,但我似乎无法正确处理。
我所拥有的:以已知频率采样的复杂信号。
我想要的是:某个频率的功率比。因此,如果信号是形式,a*cos(wt)+a*cos(2wt)
那么我应该得到0.5 for w
and 0.5 for 2w
。
我不知道我的代码问题出在哪里,但我得到的频率功率高于信号功率,如下图所示(in blue: signalPower
, in red: Fm
)。
这是我的代码:
% Nsym : Number of symbol used for the detection
% Ns : Number ofsamples per symbol
% IQrx : Complex signal to analyse
% Fmod : Modulation frequency
Nt = Nsym*Ns;
signalPower = zeros(1, length(IQrx));
Fp = zeros(1, length(IQrx));
Fm = zeros(1, length(IQrx));
for ii = 1:length(IQrx)
for jj = 0:Nt-1
if ii-jj > 0 && ii-jj <= length(IQrx)
signalPower(ii) = signalPower(ii) + ...
abs(IQrx(ii-jj))^2;
Fp(ii) = Fp(ii) + ...
IQrx(ii-jj) * ...
exp(1i*2*pi*Fmod*(ii-jj)/obj.Fs);
Fm(ii) = Fm(ii) + ...
IQrx(ii-jj) * ...
exp(-1i*2*pi*Fmod*(ii-jj)/obj.Fs);
end
end
Fp(ii) = abs(Fp(ii))^2;
Fm(ii) = abs(Fm(ii))^2;
end
编辑:根据评论中的要求,我使用的公式是:考虑到我进入了感兴趣的时间窗口。
信号功率 = 总和(信号(i)^2)
Fp = abs( sum( 信号 * exp(1i*2*pi Fmod (i)/obj.Fs) ) ^2
Fp = abs( sum( 信号 * exp(-1i*2*pi Fmod (i)/obj.Fs) ) ^2