| 查看: 174 | 回复: 1 | |||
| 当前主题已经存档。 | |||
aaaa4564木虫 (正式写手)
|
[交流]
【求助】VBLAST系统的IPIC算法的流程
|
||
|
请教高手帮忙用maltab编程,以下给出了算法的流程!小弟急需用!各位行行好,帮帮忙!小弟先在此谢过了! 只要大家对vblast系统的zf,mmse算法了解的,基本上变量是一致的,只是处理干扰的过程不同。 各个变量基本是一致的! 以下是zf_osuc和mmse_osuc算法的程序,请各位参考以下! 我只需做2发2收的IPIC算法的信号检测! function [BER]=vblast(Num,alg,modulation,corr,alpha) %************************************************************************** % This program implements vblast using perfect channel estimation for a 2x2 % system. % z=vblast(Num,alg,modulation,corr,alpha) where % Num-> number of runs % alg -> algorithm.Choose from 'ZF' (for zero-forcing),'MM'(MMSE % estimation),'ML'(maximum-likelihood decoding) % modulation -> 'BPSK,'QPSK','16QAM','64QAM' (Note: for 'ML' algorithm only % BPSK and QPSK exist and that too only for 2x2 configuration, as otherwise % run time is too high. % corr -> 1 for correlation at the receiver, 0 for no correlation % alpha -> correlation coefficient value from 0 -> 1 and 0 in case corr =0; % EXAMPLE: vblast(1000,'ZF','QPSK',1,0.5)plots ZF curve for QPSK with 0.5 % correlation coefficient at the receiver using 1000 Monte Carlo runs %************************************************************************** clc; close all; % identify bits for each type of modulation switch modulation case 'BPSK' BITS=1; case 'QPSK' BITS=2; case '16QAM' BITS=4; case '64QAM' BITS=6; end % define SNR range EbNo=[0:1:10]; %define plotting axis SNR_axis=[]; BER_axis=[]; %set initial count idx=1; %define numbers of antennas M=2;%rx antennas N=1;%tx antennas %parameters for wait bar h = waitbar(0,'Please wait...'); wb=6.25; %clear BER register BER=[]; %commence SNR loop for SNR=EbNo errors=0; %define standard deviation, sigma, for noise sigma=0.5/(sqrt(N)*10^(SNR/10)); for iter=1:Num %commence iteration loop %define a random Rayleigh channel H=(randn(M,N)+j*randn(M,N))/sqrt(2); %exercise correlation option, if any if corr R=chol([1 alpha;alpha 1]);%cholesky factor of correlation matrix, i.e. 'R' square root of correlation matrix H=R*H; % R^0.5 *H -> correlation at receiver end H_save=H;%assign H to unalterable value % modulated input data tx_bits=randn(N,BITS)>0; temp1=[]; for i=1:N d1=tx_modulate(tx_bits(i, ,modulation);temp1=[temp1; d1]; end d=temp1; %AWGN noise AWGN_noise = sqrt(sigma)*(randn(M, N)+j*randn(M, N)); %receiver signal vector added to AWGN noise r = (H_save*d)/sqrt(N) + sqrt(sigma)*(randn(M, 1)+j*randn(M, 1)); %Zero-forcing algorithm if alg=='ZF' %initialization G=pinv(H); [gk k0]=min(sum(abs(G).^2,2)); for m=1:N % This FOR loop determines the ordering sequence k1 and determines the 'a' matrix. %This is just one run,i.e. one for each H matrix. %The 'a' matrix is automatically sorted as [a1 a2...aM] k1(m)=k0; w(m, =G(k1(m), ;y=w(m, *r;a(k1(m),1)=Q(y,modulation); r = r - a(k1(m)) * H_save(:, k1(m)); H(:,k0)=zeros(M,1); G=pinv(H); for t=1:m G(k1( t), =inf;endm [gk k0]=min(sum(abs(G).^2,2)); end %MMSE algorithm elseif alg=='MM' %initialisation G=inv(H'*H+N/(10^(0.1*SNR))*eye(N))*H'; [gk k0]=min(sum(abs(G).^2,2)); for m=1:N % This FOR loop determines the ordering sequence k1 and determines the 'a' matrix. % This is just one run,i.e.one for each H matrix.The 'a' matrix is automatically sorted % as [a1 a2...aM] k1(m)=k0; w(m, =G(k1(m), ;y=w(m, *r;a(k1(m),1)=Q(y,modulation); r = r - a(k1(m)) * H_save(:, k1(m)); H(:,k0)=zeros(M,1); G=inv(H'*H+N/(10^(0.1*SNR))*eye(N))*H'; for t=1:m G(k1(t), =inf;end [gk k0]=min(sum(abs(G).^2,2)); end %count errors if BITS==1 %for BPSK modulation errors(iter) = sum((sign(real(a))~=sign(real(d)))); else %for QPSK,16QAM and 64QAM modulations errors(iter) = sum((sign(real(a))~=sign(real(d))) | sign(imag(a))~=sign(imag(d))); end end %end of iteration loop Loop BER(idx)=sum(errors)/(Num) ; % Calculate BER after completion of 'Num' runs SER(idx)=BER(idx)*BITS; %calculate symbol error rate idx=idx + 1; %increment count waitbar(wb/100); wb=wb+6.25;%increment wait bar end %end of SNR loop close(h);%terminate wait bar SNR_axis=EbNo; BER_axis=[BER_axis BER]; SER_axis=SER; %plot BER semilogy(SNR_axis,BER_axis,'b-'); xlabel('SNR [dB]'); ylabel('BER'); legend('') %title('BER Plots'); %hold; %plot SER semilogy(SNR_axis,SER_axis,'b-o'); axis([0 10 1e-4 1]); grid on; legend('BER','SER'); hold off; if alg=='MM' alg='MMSE' end str=['VBLAST System-' '2x 2 ' alg ' Algorithm with ' modulation ' Modulation']; set(gcf,'NumberTitle','off'); set(gcf,'Name',str); grid on [ Last edited by aaaa4564 on 2009-6-28 at 21:18 ] |
» 猜你喜欢
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
2楼2009-06-28 21:08:59












,modulation);
回复此楼