返回信息流先求了一个OFDM信号 再接下来就功率谱密度时候图形好像不对 请明白人指点 整个程序如下:(附件里也是这个程序)
numbits = 4096; % number of bits to be transmitted
fp = 3.432e9; % central frequency
fc = 50e9; % sampling frequency
T0 = 242.4e-9; % information length
TP = 60.6e-9; % cyclic prefix
TG = 70.1e-9; % total guard time
A = 1; % amplitude of the rectangular impulse
% response
N = 128; % number of carriers of the OFDM
% system
% -------------------------
% Step One - OFDM modulator
% -------------------------
tc = T0 / N; % chip time
ntcp = floor(TP/tc); % number of tones of the cyclic
% prefix
n = (-ntcp+1:1:N); % tone counter
NT = length(n); % total number of tones per symbol
% Bit generation ([bits] = cp0201_bits(numbits);)
bits=rand(1,numbits)>0.5;
% QPSK modulator ([S,Sc,Ss] = cp0203_qpsk_mod(bits);)
nb = length(bits); % number of bits
ns = ceil(nb/2); % number of symbols
b0 = zeros(1,ns*2); % zero padding
b0(1:nb) = bits;
j = sqrt(-1);
for s = 1 : ns
ba = b0(((s-1)*2)+1);
bb = b0(((s-1)*2)+2);
k = bb + ba*2;
p = ((pi/4)*(2*k-1))-pi;
Sc(s) = cos(p);
Ss(s) = sin(p);
S(s) = Sc(s) + j*Ss(s);
end
% OFDM modulator
nb = ceil(length(S)/N); % number of OFDM blocks to be
% transmitted
S0 = zeros(1,nb*N); % zero padding
S0(1:length(S))=S;
dt = 1 / fc; % sampling period
if ntcp>0
tc = (T0+TP)/NT; % tone duration
end
tonesamples = floor(tc/dt); % samples per tone
toneres = floor((TG-TP)/dt); % samples for the residual
% part
symsamp = (tonesamples*NT)+toneres;
% number of samples representing one OFDM symbol
totsamp = symsamp * nb;
% number of samples representing the transmitted signal
X = [zeros(1,totsamp)'];
for b = 1 : nb
c = S0((1+(b-1)*N):(N+(b-1)*N)); % block extraction
% S/P conversion and zero padding
A = length(c);
a1 = floor(A/2);
a2 = A - a1;
FS = 2*A;
Czp=zeros(FS,1);
Czp(1:a1)=[c(1:a1).'];
Czp(FS-a2+1:FS)=[c(A-a2+1:A).'];
C = ifft(Czp); % IFFT of the zero-padded input
if ntcp>0 % Insertion of the cyclic prefix
C1=zeros(length(C)+2*ntcp,1);
C1(1:(2*ntcp))=C(2*N+1-(2*ntcp):2*N);
C1(2*ntcp+1:length(C1))=C;
else
C1=C;
end
zp = floor(tonesamples/2);
C2 = [C1.';zeros((zp-1),length(C1))];
C3 = C2(:);
g = ones(1,zp);
C4 = conv(g,C3);
C4 = C4(1:(zp*NT*2));
ics = 1 + (b-1)*symsamp + toneres;
X(ics:ics+length(C4)-1)=C4;
end % for b = 1 : nb
XM = X'; % P/S conversion
XM = XM(1:totsamp);
I = real(XM);
Q = imag(XM);
% Carrier modulation
time = linspace(0,totsamp*dt,length(I));
SI = I.*(cos((2*pi*fp).*time));
SQ = Q.*(sin((2*pi*fp).*time));
Stx = SI - SQ;
%************************************下面求功率谱密度*************************
dt=1/fc;
N=length(Stx);
T=N*dt;
df=1/T;
X = fft(Stx);
X = X / N;
mPSD=abs(X).^2/(df^2);
PSD = fftshift(mPSD);
PSD = (1/T).*PSD;
% -----------------------------------
% Step Two - Graphical representation
% -----------------------------------
frequency = linspace(-fc/2,fc/2,length(PSD));
PF=plot(frequency,PSD);
set(PF,'LineWidth',[2]);
AX=gca;
set(AX,'FontSize',12);
X=xlabel('Frequency [Hz]');
set(X,'FontSize',14);
Y=ylabel('Power Spectral Density [V^2/Hz]');
set(Y,'FontSize',14);
这是一条镜像帖。来源:北邮人论坛 / matlab / #5282同步于 2009/4/28
Matlab机器人发帖
[求助]关于求OFDM信号的功率谱问题 感激不尽!
zgslovewy
2009/4/28镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。