1

私は信号に対していくつかの計算をしようとしています。信号は、868 MHz の搬送波で約 40 kHz のブロック波によって変調された rfid タグからの測定値であると想定されています。私が持っている信号は 250 MHz でサンプリングされ、この.mat ファイルに保存されている 1250005 サンプルが得られます。

ここで、スペクトル x[n] をプロットしたいと思います。私がするように言われたのは、1024 サンプルのセグメントの fft を実行することです。または、Matlabs PSD 関数を使用します。しかし、私はこれに苦労しています。これまでのところ、これは私のMatlabコードです:

load antenna_1;
x = channel_1;

Fs = 250e6; % Sampling frequency 
t = (0:length(channel_1)-1)*1/Fs; % Time vector 
nfft = 1024; % Length of FFT

X = fft(x,nfft);
X = X(1:nfft/2);
mx = abs(X);
f = (0:nfft/2-1)*Fs/nfft; % Frequency vector

plot(t,x);
xlabel('Time (s)'); ylabel('Amplitude');
figure(2);
plot(f,mx);
xlabel('Frequency (Hz)'); ylabel('Power');

この最後のプロットは、119 MHZ 付近の 1 つの周波数成分を示しています。868 MHz 信号 868 - 3*250 = 118 からのエイリアシングのため、これは完全に奇妙ではありません。また、psd 関数を使用してスペクトルを取得するにはどうすればよいでしょうか。

4

1 に答える 1

0

皆さん、本当にお世話になりました。ありがとうございます!

そのため、代わりに次のコードで pwelch を使用しました。

load antenna_1;
x = channel_1;

Fs = 250e6;
Nfft = 2^10;
[Pxx,freq] = pwelch(x,hamming(Nfft),[],[],Fs);

figure;
plot(freq,Pxx);

これで問題なく動作し、以前とほぼ同じ結果が得られます。しかし今、私は ~119MHz のコンポーネントをゼロにシフトしたいと考えています。したがって、このスキームで x[n] から w[n] に取得するには. そのために、次の乗算を適用しています。

n = 0:1:Nfft-1;
w = linspace(0,2*pi,Nfft/2+1);

Pmult = Pxx.*exp(-1j*pi*2);
F = exp(-j*w*119e6).*Pxx';

figure;
plot(freq,abs(Pmult));

しかし、これでコンポーネントをまったくシフトさせることができないようですか?

于 2013-11-09T19:18:12.743 に答える