【數字基帶訊號】基於matlab數字雙相碼模擬【含Matlab原始碼 989期】
阿新 • • 發佈:2021-06-19
一、簡介
雙相碼,又名曼徹斯特碼,其編碼規則是:將資訊程式碼 0 編碼為線路碼“01”,將資訊程式碼1為線路碼“10”雙相碼常用於區域網傳輸,每一位的中間的跳變,既作時鐘訊號,又作資料訊號。
二、原始碼
close all clear all %取樣點數的設定 k=14; %每碼元取樣數的設定 L=128; N=2^k; M=N/L;%M為碼元個數 dt=1/L;%時域取樣間隔 T=N*dt;%時域截斷區間 df=1.0/T;%頻域取樣間隔 Bs=N*df/2;%頻域截斷區間 t=linspace(-T/2,T/2,N);%產生時域取樣點 f=linspace(-Bs,Bs,N);%產生頻域取樣點 EP1=zeros(size(f)); EP2=zeros(size(f)); EP3=zeros(size(f)); for x=1:1000 % 取樣1000次 K=round(rand(1,M)); %產生一個長度為M的隨機序列K,0和1等概出現 original=zeros(L,M); %產生一個L行M列的original矩陣,初始化為全0矩陣 Manchester =zeros(L,M); %產生一個L行M列的Manchester矩陣,初始化為全0矩陣 for i=1:M if K(i)==1 original (:,i)=1;%原碼 Manchester (1:L/2,i)=1; %使manchester矩陣第i列前L/2個元素為1 else original (:,i)=0;%原碼 Manchester (:,i)=1; %使manchester矩陣第i列為1 Manchester (1:L/2,i)=0; %使manchester矩陣第i列前L/2個元素為0 end end %分別重排nrz、manchester矩陣為1行N列的矩陣 original =reshape(original,1,N); Manchester =reshape(Manchester,1,N); %做傅立葉變換並算出功率譜密度 ORIGINAL =t2f(original,dt); P1=ORIGINAL.*conj(ORIGINAL)/T; MANCHESTER=t2f(Manchester,dt); P2=MANCHESTER.*conj(MANCHESTER)/T; %求功率譜密度的均值 EP1=(EP1*(x-1)+P1)/x; EP2=(EP2*(x-1)+P2)/x; end figure(1) %開啟一個編號為1的繪圖視窗 subplot(2,2,1); plot(t,original); %畫原碼的時域圖 axis([-3,3,min(original)-0.1,max(original)+0.1]); title('原碼','fontsize',12); xlabel('t(ms)','fontsize',12); ylabel('original(t)','fontsize',12); grid on subplot(2,2,2); function X=t2f(x,dt) X=fftshift(fft(x))*dt;
三、執行結果
四、備註
版本:2014a
完整程式碼或代寫加1564658423