⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpskvsqam.txt

📁 Matlab实现QPSK和16-QAM的仿真
💻 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 + -