📄 signal_generator.m
字号:
function signal_noise=signal_generator(modulation_mode)
Fc=100;%载波频率
Fd=10;%数字传输频率
Fs=1000;%采样频率
K=1;%The legth of message signal
std_value1=0.3981;%加性高斯白噪声的方差是0.1,S/N=10db
%2ASK调制信号的产生
if modulation_mode==1
amp_2ask=0.8*randint(K*100,1)+0.2;%产生信息信号
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;%产生信噪比为10db的有噪信号
signal_noise=signal_2ask_noise1;
elseif modulation_mode==2
%4ASK调制信号的产生
amp_4ask=0.25*randint(K*100,1,4)+0.25;%产生信息信号
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;%产生信噪比为10db的有噪信号
signal_noise=signal_4ask_noise1;
elseif modulation_mode==3
%2FSK调制信号的产生
rb=50;%fsk偏移频率
amp_2fsk=ones(K*100,1);%产生信息信号
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;%产生信噪比为10db的有噪信号
signal_noise=signal_2fsk_noise1;
elseif modulation_mode==4
%4FSK调制信号的产生
rb=50;%fsk偏移频率
amp_4fsk=ones(K*100,1);%产生信息信号
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;%产生信噪比为10db的有噪信号
signal_noise=signal_4fsk_noise1;
elseif modulation_mode==5
%2PSK调制信号的产生
amp_2psk=ones(K*100,1);%产生信息信号
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;%产生信噪比为10db的有噪信号
signal_noise=signal_2psk_noise1;
elseif modulation_mode==6
%4PSK调制信号的产生
amp_4psk=ones(K*100,1);%产生信息信号
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;%产生信噪比为10db的有噪信号
signal_noise=signal_4psk_noise1;
elseif modulation_mode==7
%16QAM调制信号的产生
d=sqrt(2)/3;
amp_qam_I=randint(K*100,1,4);%产生信息信号
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;%产生信噪比为10db的有噪信号
signal_noise=signal_qam_noise1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -