BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #5282同步于 2009/4/28
Matlab机器人发帖

[求助]关于求OFDM信号的功率谱问题 感激不尽!

zgslovewy
2009/4/28镜像同步0 回复
先求了一个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);
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。