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

📄 smart_antenna1.m

📁 matlab信道模型
💻 M
字号:
% 信道干扰建模

clear; % 清除内存/command窗口/图形窗口

usernum=3;  % 因为用户1、2信道近似相近,所以至少两个用户
framelength=100;
antnum=6;
snr=14;
NOISE_EN = 1; ZorM = 1; % 0:ZF=zero force  1:MMSE=最小均方误差
SE = 4; M_ary = 2^SE; modsch = 'qask'; Power=5; % power根据QPSK调制星座点求出

%random bits 
b = randint(usernum,framelength,M_ary);   % M_ary=2^SE=16 功能:产生4*16矩阵,每个元素均匀分布在0-15
%modulation  调制
sig = dmodce(b,1,1,modsch,M_ary);   % modsch='qask' 矩形调制
%generate H  传输信道模型
rH = normrnd(0,1/sqrt(2),antnum,usernum);  % 产生均值=0,方差(即:根号(每个元素-均值,然后平方和))=0.707,t*r阶的矩阵
iH = normrnd(0,1/sqrt(2),antnum,usernum);
H = rH + i*iH;  % 均值=0,功率密度=1的i.i.d.矩阵模型
H(:,1)=H(:,2)+0.00000001+0.00000001*i;  %两用户距离很近,信道近似相同,则
%根据snr计算噪声功率
snr_d = 10^(snr/10);
sigma=sqrt(Power/(2*snr_d));
%generate noise模型
nr = normrnd(0,sigma,antnum,framelength);
ni = normrnd(0,sigma,antnum,framelength);
noise=nr+i*ni;
% >>>>>>>>>>>>>>>>>>>>>>>>传输>>>>>>>>>>>>>>>>>>>>>>>>>>>>
resig = H * sig;
%添加噪声
if NOISE_EN == 1
    resign = resig + usernum * noise;  % n个用户的噪声之和
else
    resign = resig;
    NOISE_EN=0.00000000001;  % 为了后面MMSE接收时用
end
% 计算W
if ZorM==0  % ZF接收
    W = H'*inv(H*H');
else   %MMSE
    W = H'*inv(H*H'+eye(antnum)/snr_d*NOISE_EN);
end
%<<<<<<<<<<<<<<<<<<<<<<接收<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
esig = W * resign;
% 解调
rb = ddemodce(esig,1,1,modsch,M_ary);
%错误率
[errnum,errrat] = symerr(b,rb,'overall'); % 错误比特数和错误率:先将b/rb转化为二进制比特数
for i=1 : usernum
    [errnum_r(i),errrat]=symerr(b(i,:),rb(i,:),'overall');
end
%绘图
i=linspace(1,framelength,framelength);
for jj=1:1:usernum
    subplot(usernum,1,jj),plot(i,rb(jj,:),'.r',i,b(jj,:),':b',i,b(jj,:),'.b'),grid,legend(['第',num2str(jj),'用户错误比特:',num2str(errnum_r(jj))])
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -