matlab psk瑞利信道,求救 :Matlab的8psk瑞利信道仿真

哪位大侠给指导下,我这个8psk瑞利信道的仿真图怎么不对呢

clear all;

clc;

tic;

%--------------------------------------------------------------------------

% 定义参数

n               = 10000;                                  % 符号数

Fs              = 2e4;                                   % 输入符号速率

FD              = 100;                                   % 多普勒频移

nsamp           = 8;                                     % 过采样数

F_nsamp         = nsamp*Fs;                              % 采样后速率

Ts              = 1/F_nsamp;                             % 采样后符号持续时间

filtorder       = 256;                                   % 滤波器阶数

delay           = filtorder/(nsamp*2);                   % 滤波器延迟

rolloff         = 0.25;                                  % 升余弦滚降系数

M               = 8;                                     % 8进制

k               = log2(M);

EbNo = [0:13];                                           %设定EbNo范围

rt=zeros(1,length(EbNo));                                %初始化误码率向量

%--------------------------------------------------------------------------

% 产生随机信息

x = randint(n,1,M); %产生随机符号.

%--------------------------------------------------------------------------

% 产生一个升余弦滚降滤波器

rrcfilter = rcosine(Fs,F_nsamp,'fir/sqrt',rolloff,delay);

%--------------------------------------------------------------------------

% 进行8psk调制

y=modulate(modem.pskmod('M', 8,'PhaseOffset', 0,'SymbolOrder', 'gray',  'INPUTTYPE', 'INTEGER'),x);

%--------------------------------------------------------------------------

% 脉冲成形.

ytx = rcosflt(y,Fs,F_nsamp,'filter',rrcfilter);

%--------------------------------------------------------------------------

% 通过瑞利信道

c=rayleighchan(Ts,FD);

y_ray=filter(c,ytx);

%--------------------------------------------------------------------------

% 加入加性高斯白噪声

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);

yrx = downsample(yrx,nsamp);                            % 下采样

yrx = yrx(2*delay+1:end-2*delay);                      % 去除延迟

%--------------------------------------------------------------------------

% 解调

demodObj    = modem.pskdemod('M', 8, 'SymbolOrder', 'Gray', 'OutputType', 'INTEGER');

z = demodulate(demodObj,yrx);

%--------------------------------------------------------------------------

% 计算差错率

[num,rt(jj)] = biterr(x,z);

rt(jj)

end

lz = berfading(EbNo, 'psk', M, 1);%理论曲线

hold on; semilogy(EbNo,lz,'-r',EbNo,rt,'b.');

title('Comparing Theoretical and Empirical Error Rates');

hold off;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
仿真步骤如下: 1. 生成2PSK调制信号,采样率为2 kHz,传输速率为1 kbps。 2. 生成高斯白噪声信道,采用MATLAB中的awgn函数,指定信噪比SNR。 3. 生成平坦瑞利衰落信道,采用MATLAB中的rayleighchan函数,指定采样率、最大时延和最大多普勒频移等参数。 4. 生成频率选择性瑞利衰落信道,采用MATLAB中的rsgsc函数,指定采样率、多普勒频谱和时延等参数。 5. 对于每种信道,生成一定数量的随机信道实现,并分别将2PSK调制信号通过这些信道进行传输,记录每个实现的信噪比。 6. 统计每个信道实现的信噪比,计算平均值和方差,并将结果进行比较分析。 MATLAB代码示例: ```matlab % 生成2PSK调制信号 fs = 2000; % 采样率 fc = 1000; % 载频频率 T = 1; % 传输时间 t = 0:1/fs:T-1/fs; % 时间序列 data = randi([0,1],1,T*1000); % 生成随机二进制数据 mod_signal = pskmod(data,2); % 2PSK调制 tx_signal = mod_signal .* exp(1j*2*pi*fc*t); % 加载载频 % 生成高斯白噪声信道 snr_db = 10; % 信噪比(dB) rx_signal1 = awgn(tx_signal,snr_db,'measured'); % 生成平坦瑞利衰落信道 chan = rayleighchan(1/fs,10,[0,200],[0,-20]); % 最大时延为10s,最大多普勒频移为20Hz rx_signal2 = filter(chan,tx_signal); % 生成频率选择性瑞利衰落信道 fd = 200; % 多普勒频谱 tau = [0,1,3,5,6]*1e-3; % 时延 pdb = [0,-2,-6,-8,-10]; % 时延对应的功率衰落因子 chan = rsgsc(1/fs,fd,tau,pdb); rx_signal3 = filter(chan,tx_signal); % 分别计算信号的信噪比 snr1 = 10*log10(norm(tx_signal)^2/norm(rx_signal1-tx_signal)^2); snr2 = 10*log10(norm(tx_signal)^2/norm(rx_signal2-tx_signal)^2); snr3 = 10*log10(norm(tx_signal)^2/norm(rx_signal3-tx_signal)^2); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值