?? tx_modulate.m
字號:
% 這是一個調(diào)制的函數(shù),理解它對各種調(diào)制方法起到促進(jìn)作用;
% 本程序的基帶信號到調(diào)制是很好的例子;
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的值翻轉(zhuǎn)了一下;
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 調(diào)制
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 調(diào)制
elseif ~isempty(findstr(modulation, '16QAM'))
% generates 16QAM symbols
m=1;
% k是實(shí)軸,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
% 施以不同的權(quán)重;
mod_symbols=table([8 4 2 1]*inp+1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 64-QAM modulation
elseif ~isempty(findstr(modulation, '64QAM'))
% generates 64QAM symbols
m=1;
% k是實(shí)軸,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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -