📄 4ask.m
字号:
clear all; clc;
%4ASK调制
load ('D:\MATLAB6p5\radio\mywork\PCM\code_end1.mat');%码序列
code_end1=code_end1(1:10000);
% 调制参数
CodeFre = 6.4*10^4; %码速率 64kbps
Tc = 1/CodeFre; %码元宽度
CarrFre = 100*10^3; %载波频率 100KHz
SamFre = 3.2*10^5; %采样频率 320KHz
Ts = 1/SamFre; % 采样时间间隔
SymbFre = CodeFre/2; %符号速率 32kbps
Tsb = 1/SymbFre; %符号宽度
Temp = fix(SamFre/SymbFre); % 平均每个符号宽度内采样点个数
%Reminder= SamFre/CodeFre - fix(SamFre/CodeFre); % 得到小数,从而确定每个码元起始采样点的偏移量
%Offset = 1-Reminder; % 得到下一码元起始处时间偏移
num = length(code_end1); % 取码序列的长度
%构造符号序列
for i=0:num/2-1
%code(i+1,:)=[code_end1(2*i+1),code_end1(2*i+2)];
a(i+1)=2*code_end1(2*i+1)+code_end1(2*i+2);
i
end
num=length(a);
%ASK调制:00—0,01—1,10—2,11—3
switch a(1)
case 0
A=0;
case 1
A=1;
case 2
A=2;
case 3
A=3;
end
t = Ts :Ts: Temp*Ts;
ASK_u1= A*cos(2*pi*CarrFre*t);
SamLen = length(ASK_u1);
NewOffset = Tsb-Ts*Temp;
for n = 2:num;
% 判断载波相位变化
switch a(n)
case 0
A=0;
case 1
A=1;
case 2
A=2;
case 3
A=3
end
N=(NewOffset+Tsb)/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*Tsb-Ts*SamLen;
% end
n
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -