📄 qam.m
字号:
fb=16;
fc=16;
fs=512;
nn=16;
%msg=randint(nn,1);
msg=[1 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1];
msg1=msg*2-1;
a=msg1(1:2:nn-1);
b=msg1(2:2:nn);
for i=1:8
if a(i)==-1
if b(i)==-1
dp(i)=-0.75*pi;
else
dp(i)=0.75*pi;
end
elseif b(i)==1
dp(i)=pi/4;
else
dp(i)=-pi/4;
end
end
p(1)=dp(1);
for i=2:8
p(i)=p(i-1)+dp(i);
end
for i=1:8
I(i)=cos(p(i));
Q(i)=sin(p(i));
end
t=0:1/fs:511/fs;
for j=1:8
for i=1:64
u((j-1)*64+i)=I(j);
v((j-1)*64+i)=Q(j);
i=i+1;
end
j=j+1;
end
y=cos(pi/4)*(u.*cos(2*pi*fc*t)-v.*sin(2*pi*fc*t));
plot(y);
y2=cos(pi/4)*(u.*cos(2*pi*fc*t-pi/2)-v.*sin(2*pi*fc*t-pi/2));
for i=1:528
if i<65
y1(i)=0;
else
y1(i)=y(i-64);
end
end
figure
plot(y1);
for i=511:528
y(i)=0;
y2(i)=0;
end
I2=y.*y1;
Q2=y1.*y2;
[b,a]=butter(2,2*fb/fs);
I3=filtfilt(b,a,I2);
Q3=filtfilt(b,a,Q2);
figure
plot(I3);
figure
plot(Q3);
m=64;
N=length(y)/m;
n=(0.5:1:N)*m;
In=(sign(I3(n))+1)/2;
Qn=(sign(Q3(n))+1)/2;
xn=[In;Qn];
xn=xn(:);
xn=xn';
for j=1:16
for i=1:64
ym((j-1)*64+i)=xn(j);
end
end
figure
plot(ym);
[num2,ratio2]=symerr(msg,xn)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -