±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 178  |  »Ø¸´: 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 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

mininurse

½ð³æ (ÕýʽдÊÖ)

¡ï ¡ï ¡ï ¡ï
kuhailangyu(½ð±Ò+2,VIP+0):»¶Ó­¹âÁÙ£¬¶à¶à²ÎÓë 6-29 09:50
aaaa4564(½ð±Ò+1,VIP+0):xiexie 8-12 07:04
wuguocheng(½ð±Ò+1,VIP+0):¶à¹ÄÀø£¬¶à²ÎÓë 8-12 10:11
ÖмäȱʧµÄ¶«Î÷»¹ÊǺܶàµÄ£¬ÓÐһЩ±äÁ¿¸ù±¾²»Çå³þµ½µ×ÖµÓ¦¸Ã´ÓÄÄÀïÀ´¡£½¨Ò黹ÊÇ×Ô¼º¿´Ò»ÏÂMatlab£¬Èç¹ûÓÐPERL»òÕßCµÄ»ù´¡£¬±àMatlab³ÌÐòÄѶȲ»´ó¡£
ÒýÓûØÌû:
Originally posted by aaaa4564 at 2009-6-28 21:02:
Çë½Ì¸ßÊÖ°ïæÓÃmaltab±à³Ì£¬ÒÔϸø³öÁËËã·¨µÄÁ÷³Ì£¡Ð¡µÜ¼±ÐèÓ㡸÷λÐÐÐк㬰ï°ï棡СµÜÏÈÔÚ´Ëл¹ýÁË£¡

2Â¥2009-06-28 21:08:59
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ aaaa4564 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Çóµ÷¼Á +3 wos666 2026-04-03 3/150 2026-04-04 05:16 by gswylq
[¿¼ÑÐ] 343Çóµ÷¼Á +8 °®î¿°í 2026-03-29 8/400 2026-04-03 22:19 by –¹Æ?
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤µ÷¼ÁÒ»Ö¾Ô¸´óÁ¬º£ÊÂ085600£¬349 +11 ³ÔµÄ²»ÉÙ 2026-03-30 11/550 2026-04-03 18:05 by Jimmyandyou
[¿¼ÑÐ] ¸´ÊÔµ÷¼Á +5 ´ºÈÕÀ´ÐÅ- 2026-04-03 5/250 2026-04-03 15:01 by buqi613
[¿¼ÑÐ] µ÷¼ÁÇóÖú +8 Ïë»»ÊÖ»ú²»Ïë½âÊ 2026-04-02 11/550 2026-04-03 14:16 by ÐÇ¿ÕÐÇÔÂ
[¿¼²©] É격ÇóÖú +3 Reee1Llll 2026-04-01 3/150 2026-04-02 22:29 by ÕâÊÇÒ»¸öÎÞÁĵÄê
[¿¼ÑÐ] »¯Ñ§070300-×Ü·Ö378-Çóµ÷¼Á +5 ŲÒÎ×ÓµÄÅÝÅÝÌÇ 2026-04-02 5/250 2026-04-02 22:20 by ZXlzxl0425
[¿¼ÑÐ] 372·Ö²ÄÁÏÓ뻯¹¤£¨085600£©Ò»Ö¾Ô¸ºþÄÏ´óѧÇóµ÷¼Á +5 À¶¼ãƬ 2026-04-02 6/300 2026-04-02 21:37 by dongzh2009
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©¿Æ¼¼²ÄÁÏ¿ÆÑ§Ó빤³Ì288·Ö£¬Çóµ÷¼Á +14 Êdz½°¡ 2026-04-02 14/700 2026-04-02 21:10 by dongzh2009
[¿¼ÑÐ] 260Çóµ÷¼Á +6 ÖìÜÆÁÕ 2026-04-02 6/300 2026-04-02 20:27 by 6781022
[¿¼ÑÐ] 349Çóµ÷¼Á +10 zwjjjjjj 2026-03-31 10/500 2026-04-02 20:13 by dongzh2009
[¿¼ÑÐ] 279Çóµ÷¼Á +5 ¸µÎÄÇï 2026-04-02 5/250 2026-04-02 18:10 by ±ÊÂä½õÖÝ
[¿¼ÑÐ] 0805Çóµ÷¼Á +8 ÊÇË®·Ö 2026-03-31 8/400 2026-04-02 10:46 by guanxin1001
[¿¼ÑÐ] 07ÉúÎïѧÇóµ÷¼Á һ־Ըͬ¼Ã´óѧ359·Ö +3 LAMC. 2026-03-30 3/150 2026-04-02 10:26 by 18828373951
[¿¼ÑÐ] 354Çóµ÷¼Á +4 lxb598 2026-03-31 5/250 2026-04-02 09:55 by Jaylen.
[¿¼ÑÐ] ¡¾Çóµ÷¼Á¡¿ÐÂÄÜÔ´²ÄÁϱ¾¿Æ£¬Ò»Ö¾Ô¸211£¬³õÊÔ321 +6 Çóµ÷¼ÁѧУ£¬ 2026-04-02 6/300 2026-04-02 09:41 by Çç¿Õ210210
[¿¼ÑÐ] 085601Ó¢¶þÊý¶þÇóµ÷¼Á ×Ü·Ö325 +4 Óຽº½ 2026-03-31 4/200 2026-03-31 17:38 by ÌÆãå¶ù
[¿¼ÑÐ] ²ÄÁϹ¤³Ìר˶Çóµ÷¼Á +10 hyl3153942 2026-03-29 10/500 2026-03-31 16:31 by hypershenger
[¿¼ÑÐ] 313Çóµ÷¼Á +6 Âô¸ö¹Ø×Ó°É 2026-03-31 6/300 2026-03-31 10:58 by Jaylen.
[¿¼ÑÐ] µ÷¼Á¿¼ÑÐ +3 Íõ½ÜÒ» 2026-03-29 3/150 2026-03-29 08:09 by fmesaito
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û