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

📄 channel.m

📁 MIMO and VBLAST( please see the documentation)
💻 M
字号:
function varargout = channel(sig,ch_conf,fading,varargin)%CHANNEL MIMO channel model.%   SIG_OUT = CHANNEL(SIG_IN,FADING,SNR) corrupts input signal%   SIG_IN by the desired type of channel fading. Possible values%   for FADING are 'None'|'AWGN'|'Rayleygh'. A signal-to-noise %   ratio in decibels must be set unlike a 'None' fading is chosen.%   Fading is assumed to be quasistatic and flat. %%   NOTE: When a 'None' option is chosen than there are no noise in%         the MIMO channel, however the direct signals will be%         combined at the receiver input.%%   [SIG_OUT,CH_COEFS] = CHANNEL(SIG_IN,FADING,SNR) same as above%   but returns a matrix of complex path fading. This may be useful%   when performing data detection.%%   [SIG_OUT,CH_COEFS] = CHANNEL(SIG_IN,FADING,SNR,'EchoOn') turns%   the function echo on.%%   See also DETECT, EST.%   Copyright 2001-2002 Kamil Anis, anisk@feld.cvut.cz%   Dept. of Radioelectronics, %   Faculty of Electrical Engineering%   Czech Technical University in Pragu%   $Revision: 2.0 $  $Date: 2002/10/23 17:33:28 $%   --%   <additional stuff should go here>[sig_length,space_dim,frames] = size(sig);sig_pwr = varargin{1};snr = varargin{2};symb_time = varargin{3};smplper = varargin{4};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BODY BEGIN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sigma_ch = 1;esr = symb_time * sigma_ch ^2 * ch_conf(1) * sig_pwr;n0 = esr / (10 ^ (0.1 * snr));sigma = sqrt(2 * n0 / smplper);const = sqrt(2);switch fadingcase 'Rayleigh'  ch_coefs = (randn(ch_conf(1),ch_conf(2),frames) +...    i * randn(ch_conf(1),ch_conf(2),frames)) / const;  ch_noise = (randn(sig_length,space_dim,frames) +...    i * randn(sig_length,space_dim,frames)) * sigma / const;case 'AWGN'  ch_coefs = ones(ch_conf(1),ch_conf(2),frames);  ch_noise = (randn(sig_length,space_dim,frames) +...    i * randn(sig_length,space_dim,frames)) * sigma / const;case 'None'  ch_coefs = ones(ch_conf(1),ch_conf(2),frames);  ch_noise = zeros(sig_length,space_dim,frames);end% signal mixturefor k = 1:frames % no 3D arrays multiplication is available    sig_add(:,:,k) = sig(:,:,k) * ch_coefs(:,:,k);endsig_corr = sig_add + ch_noise;varargout = {sig_corr,ch_coefs};%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BODY END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if (isempty(varargin) == 0) & (varargin{end} == 'EchoOn')	[indent,gap,name] =  iprompt('CHANEL:');		switch fading	case 'None'      str2 = [''];	otherwise      str1 = num2str(snr);      str2 = [' ,SNR -> ',str1,' [dB]'];	end		disp(' ');	disp([name,gap,'Channel fading -> ',fading,str2,'.']);	disp(' ');end

⌨️ 快捷键说明

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