资源简介
基于Matlab的Rake接受机的仿真 发射端包括分集发射,接收端的最大比值合并、等增益合并以及选择式合并方式
代码片段和文件信息
clear all;
Numusers = 1;
Nc = 16; %扩频因子
ISI_Length = 1; %码元长度
EbN0db = 2; %信噪比
Tlen = 10; %数据长度
%我们假设出的每径功率因子
power_unitary_factor1 = sqrt( 6/9 );
power_unitary_factor2 = sqrt( 2/9 );
power_unitary_factor3 = sqrt( 1/9 );
s_initial = randsrc( 1 Tlen ); %产生数据源1或-1
figure(1)
stairs(s_initial‘Color‘‘r‘);
ylim([-1.51.5]);
title(‘信号源序列‘‘Color‘‘b‘)
xlabel(‘数据长度‘)
ylabel(‘幅度‘)
%根据扩频因子等于16产生walsh矩阵
wal2 = [ 1 1; 1 -1 ];
wal4 = [wal2 wal2; wal2 wal2*(-1)];
wal8 = [wal4 wal4; wal4 wal4*(-1)];
wal16 = [wal8 wal8; wal8 wal8*(-1)];
%扩频
s_spread = zeros( Numusers Tlen*Nc );
ray1 = zeros( Numusers 2*Tlen*Nc );
ray2 = zeros( Numusers 2*Tlen*Nc );
ray3 = zeros( Numusers 2*Tlen*Nc );
for i = 1:Numusers
x0 = s_initial( i: ).‘*wal16( 8: );
x1 = x0.‘;
s_spread( i: ) = ( x1(:) ).‘;
end
%将扩频后的输出重复然后进行延迟
ray1( 1:2:2*Tlen*Nc - 1 ) = s_spread( 1:Tlen*Nc );
ray1( 2:2:2*Tlen*Nc ) = ray1( 1:2:2*Tlen*Nc - 1 );
%产生第二第三径信号
ray2( ISI_Length + 1:2*Tlen*Nc ) = ray1( 1:2*Tlen*Nc - ISI_Length );
ray2( 2*ISI_Length + 1:2*Tlen*Nc ) = ray1( 1:2*Tlen*Nc - 2*ISI_Length );
for nEN = 1:length( EbN0db )
en = 10^( EbN0db(nEN)/10 ); %信噪比转换
sigma = sqrt( 32/(2*en) );
%收到信号
demp = power_unitary_factor1*ray1+...
power_unitary_factor2*ray2+...
power_unitary_factor3*ray3+...
( rand( 12*Tlen*Nc )+randn( 12*Tlen*Nc )*i )*sigma;
dt = reshape( demp32Tlen )‘;
%将walsh码重复
wal16_d(1:2:31) = wal16(81:16);
wal16_d(2:2:32) = wal16(81:16);
%解扩后第一径输出
rdata1 = dt*wal16_d(1:).‘;
%将walsh码延迟
wal16_delay1(12:32) = wal16_d(11:31);
%解扩后第二径输出
rdata2 = dt*wal16_delay1(1:).‘;
%将walsh码延迟
wal16_delay2(13:32) = wal16_d(11:30);
wal16_delay2(11:2) = wal16_d(131:32);
%解扩后第三径输出
rdata3 = dt*wal16_delay2(1:).‘;
p1 = rdata1‘*rdata1;
p2 = rdata2‘*rdata2;
p3 = rdata3‘*rdata3;
p = p1 + p2 + p3;
u1 = p1/p;
u2 = p2/p;
u3 = p3/p;
%最大比合并
rd_m1 = real( rdata1*u1+rdata2*u2+rdata3*u3);
%等增益合并
rd_m2 = (real(rdata1+rdata2+rdata3))/3;
%选择式合并
u = [u1u2u3];
maxu = max(u);
if(maxu==u1)
rd_m3 = real(rdata1);
else
if(maxu==u2)
rd_m3 = real(rdata2);
else rd_m3 = real(rdata3);
end
end
%输出数据
r_Data1 = sign(rd_m1)‘;
r_Data2 = sign(rd_m2)‘;
r_Data3 = sign(rd_m3)‘;
end
figure(2)
subplot(311)
stairs(r_Data1‘Color‘‘r‘);
ylim([-1.51.5]);
title(‘最大比合并方式‘‘Color‘‘b‘)
xlabel(‘码元长度‘)
ylabel(‘幅度‘)
subplot(312)
stairs(r_Data2‘Color‘‘r‘);
ylim([-1.51.5]);
title(‘等增益合并‘‘Color‘‘b‘)
xlabel(‘码元长度‘)
ylabel(‘幅度‘)
subplot(313)
stairs(r_Data3‘Color‘‘r‘);
ylim([-1.51.5]);
title(‘选择式合并‘‘Color‘‘b‘)
xlabel(‘码元长度‘)
ylabel(‘幅度‘)
figure(3)
subplot(311)
stairs(s_initial‘Color‘‘r‘);
ylim([-1.51.5]);
hold on
stairs(r_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3777 2018-05-06 10:21 新建文件夹 (4)\fashe.m
文件 3183 2017-05-28 23:56 新建文件夹 (4)\jieshou.m
目录 0 2018-05-06 10:26 新建文件夹 (4)
----------- --------- ---------- ----- ----
6960 3
- 上一篇:802.11DCF matlab仿真程序
- 下一篇:newman快速算法源代码
评论
共有 条评论