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

1 visualización (últimos 30 días)
*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

Respuestas (0)

Categorías

Más información sobre Financial Data en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by