📄 rx_combine.m
字号:
function [symbol_sequence,bit_sequence]=rx_combine(rx,channel,use_relay,mrc_rx);
%在接收端合并两路信号,并判决出发送信号序列
global signal;
global relay;
values2analyse=rx.signal2analyse;
switch rx.combining_type
case 'MRC'
if (use_relay==0)
h=conj(channel(1).attenuation.h);
else
%hsrd =channel(2).attenuation.h .* channel(3).attenuation.h;
hsrd =channel(3).attenuation.h;
h = conj([channel(1).attenuation.h;hsrd]);
end
bit_sequence = real(mrc_rx .* h);
%bit_sequence = mean(real(mrc_rx .* h));
bit_sequence=sign(mean(bit_sequence,1));
%otherwise
% error(['MRC only works with DAF']);
%end
case{'ERC','FRC','SNRC','ESNRC'}
values2analyse=symbol2bit(values2analyse);
switch rx.combining_type
case 'ERC'
bit_sequence=sign(mean(values2analyse,1));
case 'FRC'
if (use_relay==0)
bit_sequence=sign(mean(values2analyse,1));
else
bit_sequence =sign(mean([rx.sd_weight;1]*ones(1,size(values2analyse,2)) .* values2analyse,1));
end
case {'SNRC','ESNRC'}
if (use_relay==0)
bit_sequence=sign(mean(values2analyse,1));
else
SNR_direct=estimate_direct_channel_SNR(channel(1),signal.modulation_type)
SNR_via=estimate_via_channel_SNR(channel(2),channel(3),relay.mode)
if (signal.modulation_type=='QPSK')
SNR_via=[SNR_via,SNR_via];
SNR_direct =[SNR_direct,SNR_direct];
end
switch rx.combining_type
case 'SNRC'
%bit_sequence=(mean([SNR_direct;SNR_via].*values2analyse,1)>=0)*2-1;
bit_sequence=sign(mean([SNR_direct;SNR_via].*values2analyse,1));
case 'ESNRC'
use_direct=SNR_direct./SNR_via>10;
use_via=SNR_direct./SNR_via<0.1;
use_equal_ratio=not(use_direct+use_via);
bit_sequence_equal_ratio=(mean(values2analyse,1)>=0)*2-1;
bit_sequence_direct=(values2analyse(1,:)>=0)*2-1;
bit_sequence_via=(values2analyse(2,:)>=0)*2-1;
bit_sequence=use_equal_ratio.*bit_sequence_equal_ratio+use_direct.*bit_sequence_direct+use_via.*bit_sequence_via;
end
end
otherwise
error(['Combining-type unkonwn:',rx.combining_type])
end
end
symbol_sequence=(bit_sequence+1)/2;
%symbol_sequence=bit_sequence;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -