⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 add_channel_effect.asv

📁 放大转发协同通信的有关仿真代码
💻 ASV
字号:
function [channel, rx] = add_channel_effect(channel,rx,signal_sequence,power)
% Add noise fading and path loss
global signal;
%---------------------
% Fading and path loss
channel.attenuation.d = 1 / (channel.attenuation.distance ^ 2);
% Path loss is constant for the whole transmission
switch channel.attenuation.pattern
case 'no'
% No fading at all (only path loss)
channel.attenuation.phi = zeros(size(signal_sequence));
channel.attenuation.h = ones(size(signal_sequence)) * channel.attenuation.d;
channel.attenuation.h_mag = channel.attenuation.h;
SNR_linear = 10^(channel.noise.SNR/10);
signal_sequence =sqrt(power)*sqrt(SNR_linear)*signal_sequence;
%SNR = a^2/(2*sigma^2)
rate =1/2;
channel.noise.sigma = sqrt(1/2);
noise_vector = (randn(size(signal_sequence))+j * randn(size(signal_sequence))) * channel.noise.sigma;
case 'Rayleigh'
% Rayleigh fading and path loss
nr_of_blocks = ceil(size(signal_sequence,2) / channel.attenuation.block_length);%128
h_block = (randn(nr_of_blocks,1) + j * randn(nr_of_blocks,1)) * channel.attenuation.d;%128*1
%h = reshape((h_block * ones(1, channel.attenuation.block_length))', 1,channel.attenuation.block_length * nr_of_blocks)%1*7800
h_channel_block =h_block * ones(1, channel.attenuation.block_length);%128*1
h=[];
for i=1:nr_of_blocks
    h=[h,h_channel_block(i,:)];
end
h;%1*128
channel.attenuation.h = h(1:(size(signal_sequence,2)));%1*128
[channel.attenuation.phi, channel.attenuation.h_mag] = cart2pol(real(channel.attenuation.h),imag(channel.attenuation.h));
channel.attenuation.phi = -channel.attenuation.phi;%1*128
SNR_linear = 10^(channel.noise.SNR/10);
signal_sequence =sqrt(power)*sqrt(SNR_linear)*signal_sequence;
rate =1/2;
%for i=1:nr_of_blocks
%    h_mag(1,i)=channel.attenuation.h_mag(1,i);
%end
channel.noise.sigma = sqrt(1/2);
noise_vector = (randn(size(signal_sequence))+j * randn(size(signal_sequence))) .* channel.noise.sigma;
otherwise
error(['Fading-pattern unknown: ',channel.attenuation.pattern])
end
% ------------
% Noise (AWGN)
%S = mean(abs(signal_sequence).^2);
% Add fading, path loss and noise to the signal
rx.received_signal = signal_sequence .* channel.attenuation.h + noise_vector;


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -