?? signal_generator.m
字號:
function signal_noise=signal_generator(modulation_mode)
Fc=100;%載波頻率
Fd=10;%數(shù)字傳輸頻率
Fs=1000;%采樣頻率
K=1;%The legth of message signal
std_value1=0.3981;%加性高斯白噪聲的方差是0.1,S/N=10db
%2ASK調(diào)制信號的產(chǎn)生
if modulation_mode==1
amp_2ask=0.8*randint(K*100,1)+0.2;%產(chǎn)生信息信號
amp_2ask_mod=zeros(100*size(amp_2ask),1);
for i=1:size(amp_2ask)
amp_2ask_mod(((i*100)-99):i*100)=amp_2ask(i)*ones(100,1);
end
fre_2ask_mod=zeros(100*size(amp_2ask),1);
for i=1:size(fre_2ask_mod)
fre_2ask_mod(i)=2*pi*Fc*i/Fs;
end
car_2ask_mod=cos(fre_2ask_mod);
signal_2ask=amp_2ask_mod.*car_2ask_mod;
signal_2ask_noise1=signal_2ask+randn(length(signal_2ask),1)*std_value1;%產(chǎn)生信噪比為10db的有噪信號
signal_noise=signal_2ask_noise1;
elseif modulation_mode==2
%4ASK調(diào)制信號的產(chǎn)生
amp_4ask=0.25*randint(K*100,1,4)+0.25;%產(chǎn)生信息信號
amp_4ask_mod=zeros(100*size(amp_4ask),1);
for i=1:size(amp_4ask)
amp_4ask_mod(((i*100)-99):i*100)=amp_4ask(i)*ones(100,1);
end
fre_4ask_mod=zeros(100*size(amp_4ask),1);
for i=1:size(fre_4ask_mod)
fre_4ask_mod(i)=2*pi*Fc*i/Fs;
end
car_4ask_mod=cos(fre_4ask_mod);
signal_4ask=amp_4ask_mod.*car_4ask_mod;
signal_4ask_noise1=signal_4ask+randn(length(signal_4ask),1)*std_value1;%產(chǎn)生信噪比為10db的有噪信號
signal_noise=signal_4ask_noise1;
elseif modulation_mode==3
%2FSK調(diào)制信號的產(chǎn)生
rb=50;%fsk偏移頻率
amp_2fsk=ones(K*100,1);%產(chǎn)生信息信號
amp_2fsk_mod=ones(100*size(amp_2fsk),1);
fre_2fsk_bias=randint(K*100,1);
fre_2fsk_bias1_mod=zeros(100*size(fre_2fsk_bias),1);
for i=1:size(fre_2fsk_bias)
fre_2fsk_bias1_mod(((i*100)-99):i*100)=fre_2fsk_bias(i)*ones(100,1);
end
fre_2fsk_mod=2*pi*(Fc-rb/2-fre_2fsk_bias1_mod*rb)/Fs;
car_2fsk_mod=zeros(size(fre_2fsk_mod),1);
for i=1:size(fre_2fsk_mod)
car_2fsk_mod(i)=cos(i*fre_2fsk_mod(i));
end
signal_2fsk=amp_2fsk_mod.*car_2fsk_mod;
signal_2fsk_noise1=signal_2fsk+randn(length(signal_2fsk),1)*std_value1;%產(chǎn)生信噪比為10db的有噪信號
signal_noise=signal_2fsk_noise1;
elseif modulation_mode==4
%4FSK調(diào)制信號的產(chǎn)生
rb=50;%fsk偏移頻率
amp_4fsk=ones(K*100,1);%產(chǎn)生信息信號
amp_4fsk_mod=ones(100*size(amp_4fsk),1);
fre_4fsk_bias=randint(K*100,1,4);
fre_4fsk_bias1_mod=zeros(100*size(fre_4fsk_bias),1);
for i=1:size(fre_4fsk_bias)
fre_4fsk_bias1_mod(((i*100)-99):i*100)=fre_4fsk_bias(i)*ones(100,1);
end
fre_4fsk_mod=2*pi*(Fc-3*rb/2-fre_4fsk_bias1_mod*rb)/Fs;
car_4fsk_mod=zeros(size(fre_4fsk_mod),1);
for i=1:size(fre_4fsk_mod)
car_4fsk_mod(i)=cos(i*fre_4fsk_mod(i));
end
signal_4fsk=amp_4fsk_mod.*car_4fsk_mod;
signal_4fsk_noise1=signal_4fsk+randn(length(signal_4fsk),1)*std_value1;%產(chǎn)生信噪比為10db的有噪信號
signal_noise=signal_4fsk_noise1;
elseif modulation_mode==5
%2PSK調(diào)制信號的產(chǎn)生
amp_2psk=ones(K*100,1);%產(chǎn)生信息信號
amp_2psk_mod=ones(100*size(amp_2psk),1);
pha_2psk_bias=randint(K*100,1);
pha_2psk_bias1_mod=zeros(100*size(pha_2psk_bias),1);
for i=1:size(pha_2psk_bias)
pha_2psk_bias1_mod(((i*100)-99):i*100)=pha_2psk_bias(i)*ones(100,1);
end
car_2psk_mod=zeros(size(pha_2psk_bias1_mod),1);
for i=1:size(pha_2psk_bias1_mod)
car_2psk_mod(i)=cos(i*2*pi*Fc/Fs-pi/2+pi*pha_2psk_bias1_mod(i));
end
signal_2psk=amp_2psk_mod.*car_2psk_mod;
signal_2psk_noise1=signal_2psk+randn(length(signal_2psk),1)*std_value1;%產(chǎn)生信噪比為10db的有噪信號
signal_noise=signal_2psk_noise1;
elseif modulation_mode==6
%4PSK調(diào)制信號的產(chǎn)生
amp_4psk=ones(K*100,1);%產(chǎn)生信息信號
amp_4psk_mod=ones(100*size(amp_4psk),1);
pha_4psk_bias=randint(K*100,1,4);
pha_4psk_bias1_mod=zeros(100*size(pha_4psk_bias),1);
for i=1:size(pha_4psk_bias)
pha_4psk_bias1_mod(((i*100)-99):i*100)=pha_4psk_bias(i)*ones(100,1);
end
car_4psk_mod=zeros(size(pha_4psk_bias1_mod),1);
for i=1:size(pha_4psk_bias1_mod)
car_4psk_mod(i)=cos(i*2*pi*Fc/Fs-3*pi/4+pi*pha_4psk_bias1_mod(i)/2);
end
signal_4psk=amp_4psk_mod.*car_4psk_mod;
signal_4psk_noise1=signal_4psk+randn(length(signal_4psk),1)*std_value1;%產(chǎn)生信噪比為10db的有噪信號
signal_noise=signal_4psk_noise1;
elseif modulation_mode==7
%16QAM調(diào)制信號的產(chǎn)生
d=sqrt(2)/3;
amp_qam_I=randint(K*100,1,4);%產(chǎn)生信息信號
amp_qam_Q=randint(K*100,1,4);
amp_qam_mod_I=zeros(100*size(amp_qam_I),1);
amp_qam_mod_Q=zeros(100*size(amp_qam_Q),1);
for i=1:size(amp_qam_I)
amp_qam_mod_I(((i*100)-99):i*100)=amp_qam_I(i)*ones(100,1)*d-d*3/2;
amp_qam_mod_Q(((i*100)-99):i*100)=amp_qam_Q(i)*ones(100,1)*d-d*3/2;
end
fre_qam_mod=zeros(100*size(amp_qam_I),1);
for i=1:size(fre_qam_mod)
fre_qam_mod(i)=2*pi*Fc*i/Fs;
end
car_qam_mod_I=cos(fre_qam_mod);
car_qam_mod_Q=sin(fre_qam_mod);
signal_qam=amp_qam_mod_I.*car_qam_mod_I+amp_qam_mod_Q.*car_qam_mod_Q;
signal_qam_noise1=signal_qam+randn(length(signal_qam),1)*std_value1;%產(chǎn)生信噪比為10db的有噪信號
signal_noise=signal_qam_noise1;
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -