?? lsb_error_pam.m
字號:
function [err_value] = lsb_error_pam(d_input_vector, snr)% This function calculates the BER for the LSB.m=length(d_input_vector);%%%%% Calculate the actual coordinate vectors (x).x=zeros(2^(m), 1);d_0=zeros(2^(m-1), 1);d_1=zeros(2^(m-1), 1);B=zeros(2^(m-1), 1);for i=2^(m-1):2^(m)-1 index=i; mult=zeros(1,m); for j=m:-1:1 mult(j)=2*mod(index,2)-1; % The 'for' loop generates b_{i,k} in (1) index=floor(index/2); end; x(i+1)=sum(mult .* d_input_vector); end;for i=1:2^(m-1) x(i)=-x(2^(m)+1-i);end;%%% Generate d_0d_0(1)=x(1);d_0(2^(m-1))=x(2^m);for i=2:2:2^(m-1)-1 d_0(i)=x(2*i); d_0(i+1)=x(2*i+1); %%% Note that x(2(i+1)-1)= x(2i+1)end;%%% Generate d_1 nowfor i=1:2:2^(m-1) d_1(i)=x(2*i); d_1(i+1)=x(2*i+1); %%% Again x(2(i+1)-1)=x(2i+1)end;%%% Now generate the B vectorfor j=1:2^(m-1) B(j)=0.5*( x(2*j-1) + x(2*j) );end;B;d_0;d_1;%%%%% Now B, d_0 and d_1 vectors are ready. Calculate the Errorerr=0;for i=1:1:2^(m-1) for j=1:2^(m-1) err=err+((-1)^(j+1))*0.5*erfc((B(j,1)-d_0(i,1))/snr); end; err;end;for i=1:1:2^(m-1) for j=1:2^(m-1) err=err+ ((-1)^(j))*0.5*erfc((B(j,1)-d_1(i,1))/snr); end; err=err+1;end;err_value=err/(2^(m));
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -