%ASK调制
code_end1=[1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0 1 1 0];
% 调制参数
CodeFre = 6.4*10^4; %码速率 64kbps
Tc = 1/CodeFre; %码元宽度
CarrFre = 100*10^3; %载波频率 100KHz
SamFre = 6.4*10^5; %采样频率 640KHz
Ts = 1/SamFre; % 采样时间间隔
Temp = fix(SamFre/CodeFre); % 平均每个码元宽度内采样点个数
%Reminder= SamFre/CodeFre - fix(SamFre/CodeFre); % 得到小数,从而确定每个码元起始采样点的偏移量
%Offset = 1-Reminder; % 得到下一码元起始处时间偏移
num = length(code_end1); % 取码序列的长度
% ASK调制
switch code_end1(1)
case 0
a=0;
case 1
a=1;
end
t = Ts :Ts: Temp*Ts;
ASK_u1= a*cos(2*pi*CarrFre*t);
SamLen = length(ASK_u1);
NewOffset = Tc-Ts*Temp;
for n = 2:num;
% 判断载波相位变化
switch code_end1(n)
case 0
a=0;
case 1
a=1;
end
N=(NewOffset+Tc)/Ts;
Temp = fix(N);
t =Ts*(SamLen+1) :Ts: Ts*(Temp+SamLen); %时间长度
%m=1:Temp;
%c=[c,cos(2*pi*CarrFre*t)];
S=a*cos(2*pi*CarrFre*t);
ASK_u1 =[ASK_u1,S];
SamLen = length(ASK_u1);
%NewReminder =N-Temp;
NewOffset = n*Tc-Ts*SamLen;
% end
n
end
figure (1)
m=length(ASK_u1);
subplot(2,1,1)
plot(1:m,ASK_u1)
subplot(2,1,2)
FS=abs(fft(ASK_u1,128));
f=(0:(128-1))'*SamFre/128;
plot(f(1:64),FS(1:64))