?? qpsk_mod_zibian.m
字號(hào):
% 這個(gè)函數(shù)返回調(diào)制以后的qpsk信號(hào);
% 這里的調(diào)制考慮了載波發(fā)送的問題;
% 編程原則是先寫出基本功能,在逐步完善;
function [y_mod]=...
qpsk_mod_ZiBian(x,fc,fs,symbol_t,theta,plot_flag)
% 注意把握好fc,fs,之間的關(guān)系,是一個(gè)四進(jìn)制碼元內(nèi)的載波信號(hào)點(diǎn)
% symbol_t表示的是一個(gè)調(diào)制符號(hào)的持續(xù)時(shí)間,
% 對(duì)于使用者來說,我知道的只是:載波頻率,抽樣頻率,調(diào)制以后的
% 符號(hào)持續(xù)時(shí)間;
% x表示的是輸入的二進(jìn)制序列碼,是列向量,
% fc是載波頻率,fs是采樣頻率,
% n是每一個(gè)四進(jìn)制碼元下?lián)碛械妮d波信號(hào)采樣點(diǎn)數(shù);
% qpsk調(diào)制的原理很簡(jiǎn)單,第一步:完成星座圖對(duì)應(yīng),
% 第二步:用這些星座圖上的點(diǎn)乘以載波;
% 畫圖標(biāo)志:plot_flag=1,就畫圖,否則不畫圖;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nargin<6
error('the input arguments are not complete');
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if size(x,1)<=size(x,2)
x=x';
else
x=x;
end; % 把x變換成列向量;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 時(shí)間的設(shè)置要注意兩點(diǎn):采樣點(diǎn)數(shù)和采樣間隔;
n=ceil(symbol_t*fs);
t=(0:n-1)/fs;
% 一個(gè)四進(jìn)制碼元下的載波:
signal_i=cos(2*pi*fc*t);
signal_q=sin(2*pi*fc*t);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 注意信號(hào)的發(fā)送方向:------------------x(i+1)--x(i)---->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 下面是調(diào)制部分:
signal_mod=[]; temp=[];
for i=1:2:(size(x,1)-1)
% 首先是完成2,4進(jìn)制的轉(zhuǎn)換;
if (x(i)==0) & (x(i+1)==0)
signal_symbol=0;
elseif (x(i)==1) & (x(i+1)==0)
signal_symbol=1;
elseif (x(i)==0) & (x(i+1)==1)
signal_symbol=2;
elseif (x(i)==1) & (x(i+1)==1)
signal_symbol=3;
else
error('The input x are not apt to the function need');
end;
% 二進(jìn)制碼元轉(zhuǎn)化為四進(jìn)制符號(hào);
temp=[temp,signal_symbol];
% 星座圖對(duì)應(yīng);
signal_constellation=pskmod(signal_symbol,4,theta);
% 調(diào)制載波;
signal_mod_i=real(signal_constellation).*signal_i;
signal_mod_q=imag(signal_constellation).*signal_q;
signal_mod_temp=signal_mod_i+signal_mod_q;
signal_mod=[signal_mod,signal_mod_temp];
end;
symbol_base=temp;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if size(signal_mod,1)<=size(signal_mod,2)
signal_mod=signal_mod';
else
signal_mod=signal_mod;
end; % 把signal_mod變換成列向量;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 在本函數(shù)的返回端得到調(diào)制好的信號(hào);
y_mod=signal_mod;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if plot_flag==1
fft_signal_mod=abs(fftshift(fft(signal_mod)));
% 畫圖;
figure;
subplot(221);
plot((0:size(x)-1)/fs,x); title('基帶二進(jìn)制信號(hào)');
xlabel('時(shí)間(s)'); ylabel('信號(hào)幅度');
subplot(222);
plot((0:size(signal_mod,1)-1)/fs,signal_mod);
title('調(diào)制后的信號(hào)'); xlabel('時(shí)間(s)'); ylabel('信號(hào)幅度');
subplot(223);
f_n=size(fft_signal_mod,1);
plot(fs*(-f_n/2:f_n/2-1)/f_n,fft_signal_mod);
title('qpsk調(diào)制信號(hào)的頻譜');
xlabel('頻率(Hz)'); ylabel('幅度'); axis tight; grid on;
subplot(224);
plot(fs*(-f_n/2:f_n/2-1)/f_n,20*log10(fft_signal_mod));
title('qpsk調(diào)制信號(hào)的頻譜(單位(dB))');
xlabel('頻率(Hz)'); ylabel('幅度(dB)'); grid on;
% 這里對(duì)dB圖的axis 不作限制;
elseif plot_flag==0
end;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -