2

我必须使用 matlab 分析已用 QPSK 调制的信号,但我似乎无法正确处理。

我所拥有的:以已知频率采样的复杂信号。

我想要的是:某个频率的功率比。因此,如果信号是形式,a*cos(wt)+a*cos(2wt)那么我应该得到0.5 for wand 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

4

1 回答 1

0

在我看来

signalPower(ii) = signalPower(ii) + abs(IQrx(ii-jj))^2;

应该更像:

signalPower(ii) = signalPower(ii) + abs(IQrx(ii-jj));

您可能想尝试一些更简单的信号功率,例如:

pwt=x'*x; % 时域功率

x您的窗口时间序列值在哪里。(来自此链接的灵感)。

于 2013-06-26T15:48:04.377 回答