查看: 276|回复: 1|关注: 0

[未答复] 多径瑞利信道误码问题

[复制链接]

新手

7 麦片

财富积分


050


9

主题

44

帖子

0

最佳答案
发表于 2018-9-14 18:21:04 | 显示全部楼层 |阅读模式
clear
clc;
tic;
%--------------------------------------------------------------------------
% 定义参数
n               = 10000;                                  % 符号数
Fs              = 2e4;                                   % 输入符号速率
FD              = 200;                                   % 多普勒频移
nsamp           = 8;                                     % 过采样数
F_nsamp         = nsamp*Fs;                              % 采样后速率
Ts              = 1/F_nsamp;                             % 采样后符号持续时间
filtorder       = 256;                                   % 滤波器阶数
delay           = filtorder/(nsamp*2);                   % 滤波器延迟
rolloff         = 0.25;                                  % 升余弦滚降系数
M               = 4;                                     % 4进制
k               = log2(M);
EbNo = 12:2:34;                                             %设定EbNo范围
rt=zeros(1,length(EbNo));                                %初始化误码率向量
% fs=9600;                                                 %采样频率
% ts=1/fs;                                                 %采样间隔
% fd=200;                                                  %Doppler频偏,以Hz为单位
tau=[0,1e-9,2e-9,3e-9];                                  %多径延时,以s为单位
pdf=[0,1,5,10];                                           %各径功率,以dB位单位
%--------------------------------------------------------------------------
% 产生随机信息
x = randi([0,M-1],n,1); %产生随机符号.
%--------------------------------------------------------------------------
% 产生一个升余弦滚降滤波器
rrcfilter = rcosine(Fs,F_nsamp,'fir/sqrt',rolloff,delay);
%--------------------------------------------------------------------------
% 进行8psk调制
% y=modulate(modem.pskmod('M', 8,'PhaseOffset', 0,'SymbolOrder', 'gray',  'INPUTTYPE', 'INTEGER'),x);
y= modulate(modem.qammod(M),x);%16QAM调制

%--------------------------------------------------------------------------
% 脉冲成形.
ytx = rcosflt(y,Fs,F_nsamp,'filter',rrcfilter);
%--------------------------------------------------------------------------
% 通过瑞利信道
          chan=rayleighchan(Ts,FD,tau,pdf);
%            chan=rayleighchan(Ts,FD);
          chan.StoreHistory = true;%信道记忆
          chan.ResetBeforeFiltering=0;%该值取1则每调用一次滤波器,滤波器状态重置,取值为0,则本次调用的衰落过程与上次一致
          y_ray=filter(chan,ytx);
          y_ray = y_ray.*exp(-1*j*angle(chan.PathGains));%相位补偿

%--------------------------------------------------------------------------
% 加入加性高斯白噪声
snr = EbNo + 10*log10(k) - 10*log10(nsamp);
for jj = 1:length(snr)
          ynoisy = awgn(y_ray,snr(jj),'measured');
%--------------------------------------------------------------------------
% 接收滤波
          yrx = rcosflt(ynoisy,Fs,F_nsamp,'Fs/filter',rrcfilter);
          yrx1 = downsample(yrx,nsamp);                            % 下采样
          yrx2 = yrx1(2*delay+1:end-2*delay);                      % 去除延迟

%--------------------------------------------------------------------------
% 解调
%           demodObj    = modem.pskdemod('M', 8, 'SymbolOrder', 'Gray', 'OutputType', 'INTEGER');
%           z = demodulate(demodObj,yrx);
            z=demodulate(modem.qamdemod(M),yrx2);

%--------------------------------------------------------------------------
% 计算差错率
          [num,rt(jj)] = biterr(x,z);
          rt(jj);
end
% lz = berfading(EbNo, 'psk', M, 1);%理论曲线
% hold on; semilogy(EbNo,lz,'-r',EbNo,rt,'b.');
% legend('理论曲线','仿真值')
% title('理论与仿真误码率对比');
% hold off;
% xn1=de2bi(x,'left-msb');            %转化为对应的二进制比特流
% xn2=reshape(xn1.',numel(xn1),1');
% xn3=de2bi(z,'left-msb');            %转化为对应的二进制比特流
% xn4=reshape(xn3.',numel(xn3),1');
%
% [number,ratio] = biterr(xn2,xn4)%误比特率,不同的个数number除以x+z的总数
[number,ratio] = biterr(x,z)%误比特率,不同的个数number除以x+z的总数





根据论坛其他人的帖子改写,由单径瑞利信道改为多径瑞利信道后,矩阵变为四维,请问是相位补偿处或者接收滤波处该如何修改才能使得解调出的z与原始x的维度一致

新手

7 麦片

财富积分


050


9

主题

44

帖子

0

最佳答案
 楼主| 发表于 2018-9-15 14:27:53 | 显示全部楼层
有没有这方面的大佬啊:'(
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表