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

📄 tx_modulate.m

📁 matlab的调制解调
💻 M
字号:
% 这是一个调制的函数,理解它对各种调制方法起到促进作用;
% 本程序的基带信号到调制是很好的例子;

function mod_symbols = tx_modulate(bits_in, modulation)

full_len = length(bits_in);

% BPSK modulation

% findstr(modulation, 'BPSK')表示在modulation中找到BPSK;

if ~isempty(findstr(modulation, 'BPSK'))
   % Angle [pi/4 -3*pi/4] corresponds to 
   % Gray code vector [0 1], respectively.
   % generates BPSK symbols
   
   % 这仅是选择相位,没有考虑频率问题;
   table=exp(j*[0 -pi]);  
   % Gray code mapping pattern for BPSK symbols
   
   % 把上面table的值翻转了一下;
   table=table([1 0]+1); 
   
   % bits_in是输入的基带信号;
   inp=bits_in;
   % maps transmitted bits into BPSK symbols
   % inp+1的取值在2,1之间,完成映射,选择相位;
   mod_symbols=table(inp+1);  
   
   % QPSK modulation
   % 下面是 QPSK 调制
elseif ~isempty(findstr(modulation, 'QPSK'))
   % Angle [pi/4 3*pi/4 -3*pi/4 -pi/4] corresponds to 
   % Gray code vector [00 10 11 01], respectively.
   % generates QPSK symbols
   % 有 4 种相位;
   table=exp(j*[-3/4*pi 3/4*pi 1/4*pi -1/4*pi]);  
   % Gray code mapping pattern for QPSK symbols
   table=table([0 1 3 2]+1); 
   inp=reshape(bits_in,2,full_len/2);
   % maps transmitted bits into QPSK symbols
   mod_symbols=table([2 1]*inp+1);  


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
  
   % 16-QAM modulation
   % 下面是 16-QAM 调制
elseif ~isempty(findstr(modulation, '16QAM'))
   % generates 16QAM symbols
   m=1;
   % k是实轴,l是虚轴;
   for k=-3:2:3
      for l=-3:2:3
         table(m) = (k+j*l)/sqrt(10); % power normalization
         m=m+1;
      end;
   end;
    % Gray code mapping pattern for 8-PSK symbols
    % 有16种情况;
   table=table([0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10]+1);
   inp=reshape(bits_in,4,full_len/4);
   % maps transmitted bits into 16QAM symbols
   % 施以不同的权重;
   mod_symbols=table([8 4 2 1]*inp+1);  
   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
    
   % 64-QAM modulation
elseif ~isempty(findstr(modulation, '64QAM'))
   % generates 64QAM symbols
   m=1;
  % k是实轴,l是虚轴;
   for k=-7:2:7
      for l=-7:2:7
         table(m) = (k+j*l)/sqrt(42); % power normalization
         m=m+1;
      end;
   end;
   table=table([[ 0  1  3  2  7  6  4  5]...
         8+[ 0  1  3  2  7  6  4  5]... 
         24+[ 0  1  3  2  7  6  4  5]...
         16+[ 0  1  3  2  7  6  4  5]...
         56+[ 0  1  3  2  7  6  4  5]...
         48+[ 0  1  3  2  7  6  4  5]...
         32+[ 0  1  3  2  7  6  4  5]...
         40+[ 0  1  3  2  7  6  4  5]]+1);
   
   inp=reshape(bits_in,6,full_len/6);
   % maps transmitted bits into 64QAM symbol
   mod_symbols=table([32 16 8 4 2 1]*inp+1);  
else
   error('Unimplemented modulation');
end;

⌨️ 快捷键说明

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