⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip_07_10.m

📁 matlab信道模型
💻 M
字号:
% MATLAB script for Illustrative Problem 10, Chapter 7.
% echo on
clear;
K=1024; N=2*K; Ts=25; T=N*Ts; variance=0.5;
noise=sqrt(variance)*randn(1,N);
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));
XX=XXX';
X=[0 XX 0 conj(XX(K-1:-1:1))];

%x=zeros(1,N);
%for n=0:N-1
%  for k=0:N-1
%    x(n+1)=x(n+1)+1/sqrt(N)*X(k+1)*exp(j*2*pi*n*k/N);
%  end
%end
x=ifft(X,N)*sqrt(N);
% echo on
r=x+noise;
%Y=zeros(1,K);
%for k=0:K-1
%  for n=0:N-1
%    Y(k+1)=Y(k+1)+1/sqrt(N)*r(n+1)*exp(-j*2*pi*k*n/N);
%  end
%end
Y=fft(r,N)/sqrt(N);
% echo on
% Detect the nearest neighbor in the 16QAM constellation
for k=0:K-1
  if real(Y(k+1))>0
    if real(Y(k+1))>2
      Z(k+1)=3;
    else
      Z(k+1)=1;
    end
  else
    if real(Y(k+1))<-2
      Z(k+1)=-3;
    else
      Z(k+1)=-1;
    end
  end
  if imag(Y(k+1))>0
    if imag(Y(k+1))>2
      Z(k+1)=Z(k+1)+3*j;
    else
      Z(k+1)=Z(k+1)+j;
    end
  else
    if imag(Y(k+1))<-2
      Z(k+1)=Z(k+1)-3*j;
    else
      Z(k+1)=Z(k+1)-j;
    end
  end
  % echo off
end
% echo on
%error=max(size(find(Z(2:K)-X(2:K))))  % find:返回不等于0的序号 size:检测不等于0的序号的数目
%errrat=error/(K-1)
[errnum,errrat]=symerr(Z(2:K),X(2:K),'overall')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -