when i execute the below mentioned program unable to get the output for second half of program

1 view (last 30 days)
*when i execute this program i am getting graph for first function but not getting the graph for second function.But when i execute these functions as seperate programs getting the output for both programs correctly *
function mrner() global M Mt hmodem bit_T mode = 1;
M = 16; Mt = 4; Mr = 4; bit_SMsym = log2(M*Mt); % number of bit per sysmbol Nbits = bit_SMsym*1e4; % Number of bits to be simulated.
hmodem = modem.qammod('M',M, 'SymbolOrder', 'Gray','InputType', 'bit'); hdemodem = modem.qamdemod('M', M,'SymbolOrder','Gray','OutputType','bit'); Eac = (mean(hmodem.Constellation .* conj(hmodem.Constellation))); SNR = 0 : 2 :24; % signal-to-noise ratio in dB No= (Eac)*10.^(-SNR/10); % noise variance
L_SNR=length(SNR); ber= zeros (L_SNR,1); bit_R=zeros(Nbits, 1);
%% bit_T = randi([0 1],Nbits,1); [mod_T ante]= SpatialMod(); mod_T = mod_T.';
for ii=1:L_SNR for j = 1 : size(mod_T ,2) channel = sqrt(.5)*( randn(Mr,Mt,1) + 1i*randn(Mr,Mt,1)); noise = sqrt(.5)*(randn(Mr , 1) + 1i*randn(Mr , 1))* sqrt(No(ii)); p = diag(channel'*channel); switch mode case 1 y = channel(:,ante(j))*(mod_T(ante(j) ,j)./sqrt(p(ante(j)))) + noise; z = (channel'*y)./p.^.5; case 2 y = channel(:,ante(j)) * mod_T(ante(j) ,j) + noise ; z = (channel'*y)./p; end [UnUsEdVaRiAbLe_To_IgNoRe, ant_est] = max(abs(z)); bi_ant = de2bi(ant_est - 1 , log2(Mt) ,'left-msb'); bi_mod = demodulate(hdemodem, z(ant_est,1) ); bit_R( (j-1)*bit_SMsym+1 : (j-1)*bit_SMsym+bit_SMsym,1) = [bi_ant.' ; bi_mod];
end
[UnUsEdVaRiAbLe_To_IgNoRe,ber(ii,1)] = biterr(bit_T(:,1),bit_R(:));
end
figure(1);
semilogy(SNR,ber(:,1),'color',[0,0.75,0.75],'linestyle','--','LineWidth',2.4);
xlabel('SNR');
ylabel('BER');
grid on;
hold on;
end
function mrner1()
mode1 = 1; M = 16; Mt = 4; Mr1 = 4; bit_SMsym1 = log2(M*Mt); % number of bit per sysmbol Nbits1 = bit_SMsym1*1e4; % Number of bits to be simulated. m1=10; P_avg1=2;
hmodem1 = modem.qammod('M',M, 'SymbolOrder', 'Gray','InputType', 'bit'); hdemodem1 = modem.qamdemod('M', M,'SymbolOrder','Gray','OutputType','bit'); Eac1 = (mean(hmodem1.Constellation .* conj(hmodem1.Constellation))); SNR1 = 0 : 2 :24; % signal-to-noise ratio in dB No1= (Eac1)*10.^(-SNR1/10); % noise variance
L_SNR1=length(SNR1); ber1= zeros (L_SNR1,1); bit_R1=zeros(Nbits1, 1);
%% bit_T = randi([0 1],Nbits1,1); [mod_T ante]= SpatialMod1(); mod_T = mod_T.';
for pp=1:L_SNR1 for f = 1 : size(mod_T ,2) nak1 = random('gam',m1,P_avg1/m1,[Mr1,Mt ,1]); % generation of RV nakagami1=sqrt(nak1); % generation of gamma RV phase1=random('unif',-pi,pi,[Mr1,Mt ,1]); % uniform distributed phase channel1=nakagami1.*exp(1i*phase1);% nakagami channel noise1 = sqrt(.5)*(randn(Mr1 , 1) + 1i*randn(Mr1 , 1))* sqrt(No1(pp)); p1 = diag(channel'*channel); switch mode case 1 y1 = channel(:,ante(f))*(mod_T(ante(f) ,f)./sqrt(p1(ante(f)))) + noise1; z1 = (channel1'*y1)./p1.^.5; case 2 y1 = channel1(:,ante(f)) * mod_T(ante(f) ,f) + noise1 ; z1 = (channel1'*y1)./p1; end [UnUsEdVaRiAbLe_To_IgNoRe,ant_est] = max(abs(z1)); bi_ant = de2bi(ant_est - 1 , log2(Mt) ,'left-msb'); bi_mod = demodulate(hdemodem1, z1(ant_est,1) ); bit_R1( (f-1)*bit_SMsym1+1 : (f-1)*bit_SMsym1+bit_SMsym1,1) = [bi_ant.' ; bi_mod];
end
[UnUsEdVaRiAbLe_To_IgNoRe,ber1(pp,1)] = biterr(bit_T(:,1),bit_R(:));
end
semilogy(SNR1,ber1(:,1),'color',[0,0.75,0.75],'linestyle','--','LineWidth',2); xlabel('SNR'); ylabel('BER'); title('BER performance of MRT over Rayleigh and Nakagami fading channel') legend('MRT over Rayleigh','MRT over Nakagami'); end

Answers (0)

Categories

Find more on Financial Data in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!