1. 程式人生 > 其它 >【通訊】基於matlab數字基帶傳輸系統【含Matlab原始碼 885期】

【通訊】基於matlab數字基帶傳輸系統【含Matlab原始碼 885期】

一、簡介

二進位制位元序列時間離散,取值離散,而實際的物理通道只能承載時間上連續的訊號,為使二進位制位元序列能在實際的物理通道傳輸,要用連續的波形表示位元0和位元1。
那麼如何用連續的波形表示位元0和位元1?
要經過符號對映和波形成形這兩個步驟:

1 符號對映
符號對映:符號對映是將抽象的位元0,位元1對映為實際的物理量,比如電壓等。

1.1 符號對映的分類

1.1.1 一個位元對映為一個符號:
1)單極性碼序列:位元0->0電平 位元1->+A電平, 如TTL電平
2)雙極性碼序列:位元0->-A電平 位元1->+A電平 如RS232
3) 三電平對映:0,1->0,-A,+A電平 如AMI碼

1.1.2 多個位元對映為一個符號
4)多個位元對映為一個符號:k個位元為對映成一個符號:

1.2 波形成形

1.3 s(t)的功率譜(數字基帶訊號的由來)

2 數字傳輸系統的分類
2.1 基於傳輸訊號的頻率高低分為基帶和頻帶傳輸系統。




矩形脈衝成形的數字訊號只適合於在非帶限通道中傳輸,帶限脈衝成形的訊號適合於在帶限通道上傳輸。

二、原始碼

fs=1;
Tc=4;
N=35;
a=1;
n=(-(N-1)/2):((N-1)/2);
[h]=umsf(N,Tc,a);
%傳送訊號波形
L=240;
A=4;
T=1;
[an]=Binary_sources(L);
[dnT]=Send_signal(A,T,L,an);
%傳送濾波器輸出波形
[xnT]=msf_signal(dnT,h);
%噪聲為0 接收濾波器為直通型 所以
figure;
rnT=xnT;
stem(rnT(1:100),'.');
xlabel('n');
ylabel('r(nT)');
title('A=3接收濾波器(非匹配)的輸出訊號波形(a=0.3)');
%抽樣判決點訊號生成
[bn]=samples_signal(rnT,A,L,N);
%判決子函式
[cn]=judgement(bn);
%畫眼圖子函式
figure
[k]=eye_pattern(rnT,A);
title('二進位制非匹配模式接收濾波器輸出訊號波形的眼圖(a=0.3)')
figure;
scatterplot(bn);
%誤位元率計運算元函式
[Pe,p]=Pe_calculate(an,cn,L);
function [an]=Binary_sources(L)
  an=rand(1,L)%產生L個1以內的隨機數
  for i=1:L
      if an(i)>0.5
          an(i)=1;
      else if an(i)<0.5
              an(i)=0;
          end
      end
  end
end
function [x]=idft(Xk,k,N)
n=(-(N-1)/2):((N-1)/2);
L=length(k); 
for a=1:N
    sum=0;
    for b=1:L
        sum=sum+(1/N)*Xk(b)*exp(j*2*pi*n(b)*k(a)/N);
        x(a)=sum;% 當a=1時即X的第一個點=w1*n的所有點
    end
end
function [cn]=judgement(bn)
for i=1:length(bn)
    if bn(i)>1/2
        cn(i)=1;
    else if bn(i)<1/2
            cn(i)=0;
        end
    end
end
end
function [h]=msf(N,Tc,a)
t=(-(N-1)/2):((N-1)/2);
n=-(N-1)/2:(N-1)/2;
k=n;
h=zeros(1,N);
for i=1:N;
    if(abs(t(i))==0)
        h(i)=1;
    elseif((1-4*a*a*t(i)*t(i)/Tc/Tc)==0)
        h(i)=Tc*sin(pi*t(i)/Tc)/t(i)/4;
    else
        h(i)=sin(pi*t(i)/Tc)*cos(a*pi*t(i)/Tc)/...
        (1-4*a*a*t(i)*t(i)/Tc/Tc)/(pi*t(i)/Tc);
    end
end
wd=(blackman(N))';
%h=h.*wd;
% [H]=dft(h,n,N);
H = h*exp(-1j*pi/N*k'*n);
H=sqrt(abs(H));
h = 1/N*H*exp(-1j*pi/N*k'*n);
% [h]=idft(H,k,N);
h=h.*wd;
h=real(h);
end
        

三、執行結果



四、備註

版本:2014a
完整程式碼或代寫加1564658423