?? ip_07_09.m
字號:
% MATLAB script for Illustrative Problem 9, Chapter 7.
% echo on
clear;
K=10; N=2*K; Ts=25; T=N*Ts;
a=rand(1,(K-1)*4); % k-1符號,1個保護間隔0
a=sign(a-0.5);
b=reshape(a,K-1,4);
% Generate the 16QAM points
XXX=2*b(:,1)+b(:,2)+j*(2*b(:,3)+b(:,4)); % 隨機聲稱9個16點QAM星座點
XX=XXX';
X=[0 XX 0 conj(XX(K-1:-1:1))]; % X長度為20,等于N
xt=zeros(1,T+1);
% IDFT t
for t=0:T % 載波分辨力
for k=0:N-1 % 載波數量
xt(t+1)=xt(t+1)+1/sqrt(N)*X(k+1)*exp(j*2*pi*k*t/T);
end
end
% IDFT n
xn=zeros(1,N);
for n=0:N-1
for k=0:N-1
xn(n+1)=xn(n+1)+1/sqrt(N)*X(k+1)*exp(j*2*pi*n*k/N);
end
end
% IFFT
xn1=ifft(X,N)*sqrt(N);
% pause % press any key to see a plot of x(t)
plot([0:T],real(xt),'r',[0:T/N:T-T/N],xn,'.b',[0:T/N:T-T/N],xn1,'og'),grid
legend('連續信號','采樣信號','IFFT信號*4.5')
hold on % 畫出每個子載波波形
for ii=[10,12]
plot([0:T],1/sqrt(N)*X(ii)*exp(j*2*pi*(ii-1)*[0:T]/T),':')
end
hold off
% Check the difference between xn and samples of x(t)
for n=0:N-1
d(n+1)=xt(T/N*n+1)-xn(1+n);
% echo off
end
% echo on
e=norm(d);
Y=zeros(1,K);
% DFT
for k=0:K-1
for n=0:N-1
Y(k+1)=Y(k+1)+1/sqrt(N)*xn(n+1)*exp(-j*2*pi*k*n/N);
end
end
Y1=fft(xn1,N)/sqrt(N);
% echo on
dd=Y(1:K)-X(1:K);
dd1=Y1(1:K)-X(1:K);
ee=norm(dd)
ee2=norm(dd1)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -