莱斯信道Matlab仿真

本文给出了FSK调制后的信号在经过多径莱斯信道后解调的完整Matlab仿真代码,供有同样仿真需求的小伙伴参看。具体代码如下:


clear
clc

%% 参数设置
Modulation_Order=2;
Packet_Length=16;
SymbolRate=1000;
SamplesPerSymbol=8;%每个符号的样点数
df=400;%FSK调制相邻载波频率间隔,单位Hz
fs=SamplesPerSymbol*SymbolRate;
SNR=10;
ts=1/fs;
fd=0;
k=3;
tau=[0 1 2]*ts;%每条径的时延
pdb=[2 1 0];%每条径的增益


%% 调制器、解调器、莱斯信道设置
H_Mod = comm.FSKModulator('ModulationOrder',Modulation_Order,'SymbolRate',1000 ,'SamplesPerSymbol',8, 'FrequencySeparation',df); %默认连续相位、整数输入 
H_Demod = comm.FSKDemodulator('ModulationOrder',Modulation_Order,'SymbolRate',1000 ,'SamplesPerSymbol',8, 'FrequencySeparation',df);
chan_Rici = ricianchan(ts,fd,k,tau,pdb);

%% 调制 过信道 加噪声 解调
data_Original = randi([0 Modulation_Order-1],Packet_Length,1);
data_AfterFSK=step(H_Mod,data_Original);
data_AfterRici=filter(chan_Rici,data_AfterFSK);
data_AfterAwgn=awgn(data_AfterRici,SNR,'measured');
data_AfterDeFSK=step(H_Demod,data_AfterAwgn);

%% 画图

% FSK调制后的信号为实际信号的等效低通信号,即复数信号,看波形时只要看实部即可。
figure(1)
plot(real(data_AfterFSK),'r*-');

figure(2)
plot(data_Original,'r*-');
hold on
plot(data_AfterDeFSK,'go-');



  • 10
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
由于瑞利信道莱斯信道都是实际无线信道中常见的多径信道模型,因此需要进行MATLAB仿真来验证信道模型的准确性和可靠性。 以下是瑞利信道莱斯信道MATLAB仿真步骤: 1. 生成随机复高斯噪声序列。 2. 生成随机相位。 3. 生成随机入射波的幅度。 4. 对于瑞利信道,将信号与瑞利衰落信道的脉冲响应进行卷积。对于莱斯信道,将信号与莱斯衰落信道的脉冲响应进行卷积,同时加上直射波的幅度。 5. 对于瑞利信道,对输出信号进行快速傅里叶变换(FFT)。对于莱斯信道,对输出信号进行莱斯衰落信道的功率谱密度估计。 6. 绘制输出信号的功率谱密度图和时域波形图,以验证信道模型的准确性和可靠性。 需要注意的是,在MATLAB中,可以使用以下函数来生成瑞利信道莱斯信道的脉冲响应: 1. ricianchan:用于生成莱斯信道的脉冲响应。 2. rayleighchan:用于生成瑞利信道的脉冲响应。 下面是一个简单的MATLAB代码示例,用于生成瑞利信道莱斯信道的脉冲响应并进行仿真: ```matlab % 生成随机复高斯噪声序列 n = 1000; % 信号长度 noise = randn(1,n) + 1i*randn(1,n); % 生成随机相位 phase = randn(1,n); % 生成随机入射波的幅度 amplitude = randn(1,n); % 生成莱斯衰落信道的脉冲响应 chan1 = ricianchan(1/100,0,0.1,0); % K = 1/100, fd = 0, PdB = 0.1, delay = 0 rx1 = filter(chan1,noise.*amplitude.*exp(1i*phase)); % 生成瑞利衰落信道的脉冲响应 chan2 = rayleighchan(1/100,0.1,0); % fd = 1/100, PdB = 0.1, delay = 0 rx2 = filter(chan2,noise.*amplitude.*exp(1i*phase)); % 绘制输出信号的功率谱密度图和时域波形图 subplot(2,1,1); psd(rx1); title('Rician Channel'); subplot(2,1,2); plot(abs(rx1)); title('Time Domain Waveform'); figure; subplot(2,1,1); psd(rx2); title('Rayleigh Channel'); subplot(2,1,2); plot(abs(rx2)); title('Time Domain Waveform'); ``` 通过上述代码,可以生成莱斯信道和瑞利信道的脉冲响应,并绘制输出信号的功率谱密度图和时域波形图,以进一步验证信道模型的准确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值