Мне нужно проанализировать сигнал, который был модулирован с помощью QPSK с использованием Matlab, и я не могу понять, что все в порядке.Частотная мощность против мощности сигнала
Что у меня есть: сложный сигнал, отснятый на известной частоте.
Что я хочу: соотношение мощности определенной частоты. Поэтому, если сигнал имеет форму a*cos(wt)+a*cos(2wt)
, тогда я должен получить 0.5 for w
и 0.5 for 2w
.
Я не знаю, где проблема с моим кодом, но я получаю частотную мощность выше, чем мощность сигнала, как вы можете видеть на графике ниже (в , в 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
Edit: В соответствии с просьбой в комментариях формулы, которые я использую: Считайте, что я идет в временном окне интересов.
signalPower = сумма (сигнал (я)^2)
Рр = абс (сумма (сигнал * ехр (1i * 2 * пи Fmod (я) /obj.Fs)))^2
Fp = абс (сумма (сигнал * ехр (-1i * 2 * пи Fmod (я) /obj.Fs)))^2
Похоже, что вы свертываете свой сигнал с квадратом амплитуды принятого сигнала, а также свертываете полученный сигнал с дельтами дирака во временной области и берут квадрат по квадрату каждого цикла. Можете ли вы указать, какую формулу вы используете для определения спектральной мощности? – macduff
@macduff Я ссылался на формулы, как вы предлагали! – Leo
Это действительно относится к dsp.stackexchange.com –