2013-06-26 5 views
2

Мне нужно проанализировать сигнал, который был модулирован с помощью QPSK с использованием Matlab, и я не могу понять, что все в порядке.Частотная мощность против мощности сигнала

Что у меня есть: сложный сигнал, отснятый на известной частоте.

Что я хочу: соотношение мощности определенной частоты. Поэтому, если сигнал имеет форму a*cos(wt)+a*cos(2wt), тогда я должен получить 0.5 for w и 0.5 for 2w.

Я не знаю, где проблема с моим кодом, но я получаю частотную мощность выше, чем мощность сигнала, как вы можете видеть на графике ниже (в , в 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 

Edit: В соответствии с просьбой в комментариях формулы, которые я использую: Считайте, что я идет в временном окне интересов.

signalPower = сумма (сигнал (я)^2)

Рр = абс (сумма (сигнал * ехр (1i * 2 * пи Fmod (я) /obj.Fs)))^2

Fp = абс (сумма (сигнал * ехр (-1i * 2 * пи Fmod (я) /obj.Fs)))^2

+0

Похоже, что вы свертываете свой сигнал с квадратом амплитуды принятого сигнала, а также свертываете полученный сигнал с дельтами дирака во временной области и берут квадрат по квадрату каждого цикла. Можете ли вы указать, какую формулу вы используете для определения спектральной мощности? – macduff

+0

@macduff Я ссылался на формулы, как вы предлагали! – Leo

+0

Это действительно относится к dsp.stackexchange.com –

ответ

0

Кажется мне, что

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

Должно быть что-то подобное:

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

Вы можете попробовать что-то немного проще для мощности сигнала, как:

PWT = х '* х; % Владение во временной области

, где x - ваше значение временного ряда в окне. (вдох от this link).