📄 qpskvsqam.txt
字号:
% 主程序c4_qamdemo.m
% 实现QPSK和16-QAM
levelx = input('Number of D levels > '); % 同相分量
levely = input('Number of Q levels > '); % 正交分量
m = input('Number of symbols > ');
n = input('Number of samples per symbol > ');
bw = input('Filter bandwidth,0<bw<1 > ');
[xd,xq] = qam(levelx,levely,m,n);
[b,a] = butter(6,bw);
yd = filter(b,a,xd);
yq =filter(b,a,xq);
subplot(2,2,1) % 散点图
plot(xd,xq,'o')
a = 1.4;
maxd = max(xd); maxq = max(xq);
mind = min(xd); minq = min(xq);
axis([a*mind a*maxd a*minq a*maxq])
axis equal
xlabel('xd');ylabel('xq')
subplot(2,2,2) % 信号经六阶巴特沃思滤波器后形成的散点图
plot(yd,yq)
axis equal;
xlabel('xd');ylabel('xq');
sym = 30;
nsym = (0:sym*n)/n;
subplot(2,2,3) % 时域信号
plot(nsym(1:sym*n),yd(1:sym*n))
xlabel('symbol index'); % 符号序数
ylabel('xd');
subplot(2,2,4)
plot(nsym(1:sym*n),yd(1:sym*n))
xlabel('symbol index');
ylabel('xq');
% 子程序:
% qam.m
function [xd,xq] = qam(levelx,levely,m,n)
xd = mary(levelx,m,n);
xq = mary(levely,m,n);
% mary.m
function y = mary(levels,m,n) % m 为符号数,n为每符号采样数
l = m*n; % 序列总长
y = zeros(1,l-n+1); % 初始化输出向量
lm1 = levels-1;
x = 2*fix(levels*rand(1,m))-lm1; % fix近零整数向量
for i = 1:m % 循环形成信息符号
k = (i-1)*n+1;
y(k) = x(i);
end
y = conv(y,ones(1,n)); % 保证每符号n采样
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -