Последний раз редактировалось mike84 08.04.2014, 13:14, всего редактировалось 2 раз(а).
Вот полный текст программы: N_frame=130; N_packet=4000; b=2;% Set to 1/2/3/4 for BPSK/QPSK/16QAM/64QAM NT=1; NR=2;% Numbers of Tx/Rx antennas SNRdBs=[0:2:20]; sq_NT=sqrt(NT); sq2=sqrt(2); for i_SNR=1:length(SNRdBs) SNRdB=SNRdBs(i_SNR); sigma=sqrt(0.5/(10^(SNRdB/10))); for i_packet=1:N_packet msg_symbol=randint(N_frame*b,NT); [temp,sym_tab,P]=modulator(msg_symbol.’,b); X=temp.’; Hr = (randn(N_frame,NR)+j*randn(N_frame,NR))/sq2; H= reshape(Hr,N_frame,NR); Habs=sum(abs(H).^2,2); Z=0; for i=1:NR R(:,i) = sum(H(:,i).*X,2)/sq_NT ... + sigma*(randn(N_frame,1)+j*randn(N_frame,1)); Z = Z + R(:,i).*conj(H(:,i)); end for m=1:P d1(:,m) = abs(sum(Z,2)-sym_tab(m)).^2 ... + (-1+sum(Habs,2))*abs(sym_tab(m))^2; end [y1,i1] = min(d1,[],2); Xd=sym_tab(i1).’; temp1 = X>0; temp2 = Xd>0; noeb_p(i_packet) = sum(sum(temp1?=temp2)); end BER(i_SNR) = sum(noeb_p)/(N_packet*N_frame*b); end % end of FOR loop for SNR semilogy(SNRdBs,BER), grid on, axis([SNRdBs([1 end]) 1e-6 1e0])
Вопрос: Непонятна строка [temp,sym_tab,P]=modulator(msg_symbol.’,b);. Такой функции modulator не нашел... И еще это [temp,sym_tab,P] что означает?
-- Вт апр 08, 2014 12:12:43 --
Следом идет программа function [mod_symbols,sym_table,M]=modulator(bitseq,b) N_bits=length(bitseq);sq10=sqrt(10); if b==1 % BPSK modulation sym_table=exp(j*[0 -pi]); sym_table=sym_table([1 0]+1); inp=bitseq; mod_symbols=sym_table(inp+1); M=2; elseif b==2 % QPSK modulation sym_table=exp(j*pi/4*[-3 3 1 -1]);sym_table=sym_table([0 1 3 2]+1); inp=reshape(bitseq,b,N_bits/b); mod_symbols=sym_table([2 1]*inp+1); M=4; elseif b==3 % generates 8-PSK symbols sym_table=exp(j*pi/4*[0:7]); sym_table=sym_table([0 1 3 2 6 7 5 4]+1); inp=reshape(bitseq,b,N_bits/b); mod_symbols=sym_table([4 2 1]*inp+1); M=8; elseif b==4 % 16-QAM modulation m=0; for k=-3:2:3 % Power normalization for l=-3:2:3, m=m+1; sym_table(m)=(k+j*l)/sq10; end end sym_table=sym_table([0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10]+1); inp=reshape (bitseq,b,N_bits/b); mod_symbols=sym_table([8 4 2 1]*inp+1); M=16; %16-ary symbol sequence else error('Unimplemented modulation');end
-- Вт апр 08, 2014 12:14:05 --
Если предположить что текст второго кода описывает функцию modulator, то как их соединить чтобы получить результат?
|