"someone" wrote in message <ne0h1n$qdh$
1...@newscl01ah.mathworks.com>...
clear all
clear classes
clc
%general parameters
%gen = [13 15];%first polynomial is the feedback polynomial
gen = [7 5];
sigmaA = 0.01:0.1:7;%standard deviation (sqrt(variance)) of the mutual a priori information
block_len = 10^5;%permutation length
nb_blocks_lim = 10;
EbN0_dB = 1;
R = 1/3;
Ec = 1;
map_metric = 'maxlogMAP';
filename = ['Res/TC_maxlogMAP_' num2str(EbN0_dB) '.mat'];
%EXIT chart object
exit = EXIT;
%main loop
bin_gen = de2bi ( base2dec ( int2str ( gen.' ), 8 ), 'left-msb' );
constraint_len = size ( bin_gen, 2 );
trellis = poly2trellis ( constraint_len, gen, gen(1) );%Recursive Systematic Convolutional Code trellis
sigma2A = sigmaA.^2;
sigma2 = (0.5*Ec/R)*10^(-EbN0_dB/10);%N0/2
sigma2A_len = length ( sigma2A );
apriori_mutual_info = zeros ( 1, sigma2A_len );
extrinsic_mutual_info = zeros ( 1, sigma2A_len );
%progress bar;
for en=1:sigma2A_len
%set sigma2A
set ( exit, 'sigma2A', sigma2A(en) );
%a priori mutual info
apriori_mutual_info(en) = exit.apriori_mutual_info ();
for nb_blocks=1:nb_blocks_lim
%bits generation
bits = randint ( 1, block_len, 2 );
%RSC
coded_bits = convenc ( bits, trellis, 0 );%RSC (initial state is zero)
%AWGN channel
rec = ( 1-2*coded_bits )+sqrt ( sigma2 )*randn ( 1, 2*block_len );
%rec(1:2:end) = zeros ( 1, block_len );%feed only parity bits
%a priori information generation
apriori_data = exit.generate_apriori_info ( bits );
%MAP
[extrinsic_coded, extrinsic_data] = c_sisorsc ( -2*rec/sigma2, apriori_data, bin_gen, 0, map_metric );%no tail
%extrinsic mutual info
extrinsic_mutual_info(en) = extrinsic_mutual_info(en) + ...
exit.extrinsic_mutual_info ( extrinsic_data, bits );
end
%mean extrinsic mutual info over all users and all blocks
extrinsic_mutual_info(en) = extrinsic_mutual_info(en)/nb_blocks_lim;
progressbar(en/sigma2A_len);
end
figure
plot ( apriori_mutual_info, extrinsic_mutual_info )
grid on
xlabel ( 'I_A' )
ylabel ( 'I_E' )
save ( filename, 'extrinsic_mutual_info', 'apriori_mutual_info', ...
'gen', 'EbN0_dB', 'block_len', 'nb_blocks_lim' )
this is my program i got error in C_SISOrsc is undefined function or method input argument of type double .can u please check once and fix this problem,can u tell me how to solve this problem.........