2013-04-04 126 views
1

我查了很多,但是無法獲得在matlab中模擬二元不對稱通道的解決方案。我應該模擬BSC(二元對稱通道)以及錯誤概率0.001的非對稱通道。在Matlab中使用二元不對稱通道進行AWGN仿真

我能夠做到的二進制對稱模擬這樣(爲任何人想要使用它)

r = rand(1000000,1); % uniform data set generation 
x = zeros(1000000,1); % data to be sent initialised 

for i = 1:1000000  % mapped to BPSK signal (-1,1) 
if r(i,1) >= 0.5 
    x(i,1) = 1; 
else 
    x(i,1) = -1; 
end 
end 

SNR = qfuncinv(0.001); 
SNRdB = 10*log(SNR); 
y = awgn(x,SNRdB);  
y = awgn(x,9.79982258); %noise added to inputs through Signal to noise 
       %ratio 


for i = 1:1000000 
if(abs(y(i,1) - 1) < abs(y(i,1) + 1)) %between -1 and 1 
    y(i,1) = 1;       %map back through 
else   %minimum distance estimations 
    y(i,1) = -1; 
end 

if(x(i,1) == y(i,1)) % determine if estimation errors are made 
    r(i,1) = 0; 
else 
    r(i,1) = 1; 
end 
end 

errors = sum(r); 
sprintf('%0.8f',errors/1000000)  %show error percentage 

這麼好,我還要做非對稱信道仿真,但無法找到導致用matlab來完成這個任務。

將認識到實現任何聯繫解決這個問題

回答

1

請糾正我,如果我錯了,但不對稱二進制信道是具有不同的錯誤概率從0到1比1到0,所以二進制信道,那麼你的代碼應該是這個樣子:

function channel_simulation(BER1,BER2,Nbits) 

    % BER1: prob 0->1 
    % BER2: prob 1->0 

    if nargin <3, Nbits = 10^6; end 

    % Data generation mapped to BPSK signal (-1,1) 
    r = rand(Nbits,1); 
    x = 2*(r>=0.5)-1; 

    % Noise (channel 1) 
    SNRdB1 = 10*log(qfuncinv(BER1)); 
    y1 = awgn(x,SNRdB1);  
    y1 = 2*(abs(y1-1)<abs(y1+1))-1; 
    r1=(x~=y1); 

    % Noise (channel 2) 
    SNRdB2 = 10*log(qfuncinv(BER2)); 
    y2 = awgn(x,SNRdB2);  
    y2 = 2*(abs(y2-1)<abs(y2+1))-1; 
    r2=(x~=y2); 

    % Error percentage 
    errors = sum(r1.*(x<0)+r2.*(x>0)); 
    fprintf('Prob: %0.8f\n',errors/Nbits)  

end 

而且你可以嘗試把它叫做:

channel_simulation(0.001,0.01)