📄 qam.m
字号:
function Signal=QAM(Rs,Fs,Fc)
% this file used to produce qam signal
% clear all;
% simulation time
Temulate = 3;
%roll factor
alfa = 1;
%carrier intial phase
Qi = pi/8;
%snr
nos = 21;
% % symbol rate
% Rs = 9600;
% % sample rate
% Fs= Rs*8;
% % carrier frequency
% Fc= 19200;
% % Fc=Rs*2;
string = 'signal_16qamdata.dat';
bit_number = floor(Temulate*Rs);
rawdata = rand(1,bit_number);
for i=1:bit_number
if(rawdata(i)>=0.5)
rawdata(i)=1;
else
rawdata(i)=0;
end
end
h = rcosfir(alfa,[-3,3],8,1,1);%;%1rcosfir(alfa,1,12,1,'sqrt')
In = zeros(1,bit_number*8/4+8);
Qn = zeros(1,bit_number*8/4+8);
j = 1;
for i = 1:4:bit_number
if((rawdata(i) == 0) & (rawdata(i+1) == 0))
In(1+j*8) = 3;%*0.41;
elseif((rawdata(i) == 0) & (rawdata(i+1) == 1))
In(1+j*8) = 1;%0.41;
elseif((rawdata(i) == 1) & (rawdata(i+1) == 0))
In(1+j*8) = -1;%0.41;
elseif((rawdata(i) == 1) & (rawdata(i+1) == 1))
In(1+j*8) = -3;%*0.41;
end
if((rawdata(i+2) == 0) & (rawdata(i+3) == 0))
Qn(1+j*8) = 3;%*0.41;
elseif((rawdata(i+2) == 0) & (rawdata(i+3) == 1))
Qn(1+j*8) = 1;%0.41;
elseif((rawdata(i+2) == 1) & (rawdata(i+3) == 0))
Qn(1+j*8) = -1;%0.41;
elseif((rawdata(i+2) == 1) & (rawdata(i+3) == 1))
Qn(1+j*8) = -3;%*0.41;
end
j = j + 1;
end
%%%%%%%%%% shape the pulse(raw data) %%%%%%%%%%%
Ishape_data = conv(In,h);
Qshape_data = conv(Qn,h);
Ishape_data = Ishape_data / 0.42; % signal = Inn * coswt ; abs(Inn) = 1;
Qshape_data = Qshape_data / 0.42;
%%%%%%%%%% modulate %%%%%%%%%%%%%%%%%%%%%%%%%%%
dot = length(Ishape_data);% dot = length(Qshape_data)
n = 1:dot;
Imod_data = Ishape_data.*cos(Fc*2*pi*n/Fs+Qi);
Qmod_data = Qshape_data.*sin(Fc*2*pi*n/Fs+Qi);
mod_data = Imod_data - Qmod_data;
data=(mod_data)*1;
Signal=data;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -