频率功率与信号功率

时间:2013-06-26 14:50:25

标签: matlab signal-processing fft frequency modulation

我必须使用matlab分析用QPSK调制的信号,我似乎无法把事情做好。

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

我想要的是:某个频率的功率比。因此,如果信号的格式为a*cos(wt)+a*cos(2wt),那么我应该0.5 for w0.5 for 2w

我不知道我的代码有什么问题,但我得到的频率功率高于信号功率,你可以在下面的图表中看到它(在blue: signalPower,在red: Fm中)

Signal power vs Frequency Power

这是我的代码:

% 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

编辑:根据评论中的要求,我使用的公式是: 考虑一下我进入感兴趣的时间窗口。

  

signalPower = sum(signal(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

1 个答案:

答案 0 :(得分:0)

对我而言

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

应该更像是:

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

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

PWT = X'* X; %时域功率

其中x是您的窗口时间序列值。 (灵感来自this link)。