matlab を使用して QPSK で変調された信号を分析する必要がありますが、うまくいかないようです。
私が持っているもの:既知の周波数でサンプリングされた複雑な信号。
私が欲しいもの:特定の周波数の電力比。したがって、信号が次の形式の場合は、 anda*cos(wt)+a*cos(2wt)
を取得する必要が0.5 for w
あり0.5 for 2w
ます。
blue: signalPower
私のコードのどこに問題があるのか わかりませんが、以下のグラフ( 、 )でわかるように、信号電力よりも高い周波数電力が得られます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
編集:コメントで要求されたように、私が使用する式は次のとおりです。関心のある時間枠に入ると考えてください。
signalPower = 合計 ( signal(i)^2 )
Fp = abs( sum( signal * exp(1i*2*pi Fmod (i)/obj.Fs) ) )^2
Fp = abs( sum( signal * exp(-1i*2*pi Fmod (i)/obj.Fs) ) )^2