Tài liệu Chương trình nguồn_Chương 3 ppt

29 313 0
Tài liệu Chương trình nguồn_Chương 3 ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 257 GVHD :Ths. Hoàng Đình Chiến CHƯƠNG 3 CHƯƠNG TRÌNH NGUỒN Có tất cả 32 file chương trình chính, ở đây chỉ trình bày những chương trình chính. Chương trình khởi động (init.m) % R : tốc độ bit % Fc : tần số sóng mang % N : chiều dài bit cần truyền % s : chuỗi bit truyền % Sample : số mẫu trong 1 bit % A : biên độ sóng mang % bittrain : số bit huấn luyện % bittransfer : số bit truyền mỗi lần clear all; global R; global Fc; global N; global s Sample A bittrain bittransfer; R=0; Fc=0; N=0; Sample=50; s=[]; A=1; bittrain=10; bittransfer=500; randn('state',sum(100*clock)); rand('state',sum(100*clock)); Chương trình lưu các thông số cần thiết (callbacknext.m) function callbacknext global Fc R N Sample TypeMod; Sample=round(20*Fc/R); %Chon loai dieu che tin hieu HModulation=findobj('tag','modu'); HModulation=get(HModulation,'Value'); if HModulation==1 TypeMod='BPSK'; else TypeMod='QPSK'; end Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 258 GVHD :Ths. Hoàng Đình Chiến %Chon cac loai nhieu loainhieu; totalSNR; clear HModulation; set(gcf,'Visible','off'); train; Chương trình lưu thông số nhiễu (loainhieu.m) function loainhieu; global A Sample HCheckNoise=findobj('tag','CheckNoise'); HCheckNoise=get(HCheckNoise,'Value'); HCheckFading=findobj('tag','CheckFading'); HCheckFading=get(HCheckFading,'Value'); HCheckCoChannel=findobj('tag','CheckCoChannel'); HCheckCoChannel=get(HCheckCoChannel,'Value'); HRadioSNR=findobj('tag','RadioSNR'); HRadioSNR=get(HRadioSNR,'Value'); HEditSNR=findobj('tag','EditSNR'); SNRNoise=get(HEditSNR,'String'); SNRNoise=str2num(SNRNoise); HEditMean=findobj('tag','EditMean'); HEditMean=get(HEditMean,'String'); Means=str2num(HEditMean); HEditVariance=findobj('tag','EditVariance'); HEditVariance=get(HEditVariance,'String'); Vars=str2num(HEditVariance); HEditSNRFad=findobj('tag','EditSNRFad'); SNRFad=get(HEditSNRFad,'String'); SNRFad=str2num(SNRFad); HSourceFad=findobj('tag','SourceFad'); SourceFad=get(HSourceFad,'string'); SourceFad=str2num(SourceFad); HEditSNRCo=findobj('tag','EditSNRCo'); SNRCo=get(HEditSNRCo,'String'); SNRCo=str2num(SNRCo); HSourceCo=findobj('tag','SourceCo'); SourceCo=get(HSourceCo,'String'); SourceCo=str2num(SourceCo); Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 259 GVHD :Ths. Hoàng Đình Chiến save loainhieu HCheckNoise HCheckFading HCheckCoChannel HRadioSNR SNRNoise Means Vars SNRFad SourceFad SNRCo SourceCo; if HCheckFading Ps=0.5*A^2; %Cong suat tin hieu Pn=Ps*10^(-SNRFad/10); %Cong suat nhieu tong cong RatioFad=[]; i=1; while i<=SourceFad if i==SourceFad Pni=Pn; %Cong suat nhieu nguon thu i else Pni=Pn*rand; end Pn=Pn-Pni; Pni=Pni*3; RatioFad(i)=sqrt(Pni/Ps); %Ti le bien do Un/Us i=i+1; end PhaseShiftFad=round(randn(1,SourceFad)*3*Sample); save loainhieu RatioFad PhaseShiftFad -append; end if HCheckCoChannel Ps=0.5*A^2; Pn=Ps*10^(-SNRCo/10); %Cong suat nhieu tong cong RatioCo=[]; i=1; while i<=SourceCo if i==SourceCo Pni=Pn; else Pni=Pn*rand; end Pn=Pn-Pni; RatioCo(i)=sqrt(Pni/Ps); %Ti le bien do Un/Us i=i+1; end PhaseShiftCo=round(randn(1,SourceCo)*2*Sample);%Do doi phase tin hieu nhieu save loainhieu RatioCo PhaseShiftCo -append; end Chương trình xét chọn loại nhiễu (chonnhieu.m) function [Noise,NoiseFading,NoiseCoChannel]=chonnhieu; load loainhieu ; if HCheckNoise==1 if HRadioSNR==1 Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 260 GVHD :Ths. Hoàng Đình Chiến Noise=whitenoise(SNRNoise); %Lay nhieu White Noise theo SNR else Noise=gaussnoise(Means,Vars); %Lay nhieu Gaussian end else Noise=0; end if HCheckFading==1 NoiseFading=fading; %Lay nhieu Fading else NoiseFading=0; end if HCheckCoChannel==1 NoiseCoChannel=cochannel; %Lay nhieu CoChannel else NoiseCoChannel=0; end Chương trình tạo nhiễu nhiệt với SNR cho trước (whitenoise.m) function out=Whitenoise(SNRNoise) global bittransfer Sample A; Ps=0.5*A^2; n=randn(1,bittransfer*Sample); out=10*n.*sqrt(Ps*10^(-SNRNoise/10)); clear n Ps; Chương trình tạo nhiễu Gauss với giá trò trung bình và phương sai cho trước (gaussnoise.m) function out=Gaussnoise(Mean,Var) global bittransfer Sample; NoiseSignal=randn(1,bittransfer*Sample); out=NoiseSignal*3*Var+Mean; clear NoiseSignal; Chương trình tạo nhiễu Fading (fading.m) function out=fading; load loainhieu PhaseShiftFad RatioFad SourceFad; global bittransfer Info Sample A t ; out=0; i=1; while i<=SourceFad Fadi=RatioFad(i)*Info; if PhaseShiftFad(i)>0 Fadi(bittransfer*Sample:- 1:PhaseShiftFad(i)+1)=Fadi(bittransfer*Sample-PhaseShiftFad(i):-1:1); Fadi(1:1:PhaseShiftFad(i))=0; Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 261 GVHD :Ths. Hoàng Đình Chiến elseif PhaseShiftFad(i)<0 Fadi(1:1:bittransfer*Sample+PhaseShiftFad(i))=Fadi(1- PhaseShiftFad(i):1:bittransfer*Sample); Fadi(bittransfer*Sample+PhaseShiftFad(i)+1:1:bittransfer*Sample)=0; end out=out+Fadi; i=i+1; end Chương trình tạo nhiễu đồng kênh (cochannel.m) function out=cochannel; load loainhieu RatioCo PhaseShiftCo SourceCo; global R Fc bittransfer Sample t t0 A; T=1/R; i=1; out=0; while i<=SourceCo Rn=R; %Toc do bit nhieu Rn Nn=ceil(bittransfer*Rn/R); %so bit cua tin hieu nhieu dong kenh Nn=ceil(Nn/2)*2; %Bao dam Nn la so chan bit dieu che QPSK Tn=1/Rn; n=randint(1,Nn); %Tao bit nhieu Ai=RatioCo(i)*A; %Ai la bien do tin hieu nhieu nEven(2:2:Nn)=n(2:2:Nn); nEven(1:2:Nn-1)=n(2:2:Nn); nOdd(1:2:Nn-1)=n(1:2:Nn-1); nOdd(2:2:Nn)=n(1:2:Nn-1); wt=2*pi*Fc*t; Coi=Ai*(cos(wt+nOdd(ceil((t-t0)/Tn- 0.1/(Tn*Sample*R)))*pi)+sin(wt+nEven(ceil((t-t0)/Tn-0.1/(Tn*Sample*R)))*pi)); if PhaseShiftCo(i)>0 Coi(bittransfer*Sample:-1:PhaseShiftCo(i)+1)=Coi(bittransfer*Sample- PhaseShiftCo(i):-1:1); Coi(1:1:PhaseShiftCo(i))=0; elseif PhaseShiftCo(i)<0 Coi(1:1:bittransfer*Sample+PhaseShiftCo(i))=Coi(1- PhaseShiftCo(i):1:bittransfer*Sample); Coi(bittransfer*Sample+PhaseShiftCo(i)+1:1:bittransfer*Sample)=0; end out=out+Coi; i=i+1; end Chương trình chạy mô phỏng (callbackrun.m) function callbackrun; Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 262 GVHD :Ths. Hoàng Đình Chiến global Fc R N A t t0 Sample TypeMod s bittrain bittransfer; global Info FiltedTransmit Receive FiltedReceive FiltedLow ss; global AfterEq Decision; % Info : Tín hiệu điều chế không có nhiễu % FiltedTransmit : Tín hiệu điều chế sau khi qua BPF % Receive : Tín hiệu thu % FiltedReceive : Tín hiệu thu sau khi qua BPF % FiltedLow : Tín hiệu thu sau LPF % ss : chuỗi bit thu được không qua bộ cân bằng % AfterEq : Tín hiệu thu sau khi qua bộ cân bằng % Decision : Chuỗi bit thu được sau khi qua bộ cân bằng luutrain; set(gcf,'Visible','off'); t0=0; epre=0; etrain=0; Sample=round(20*Fc/R); T=1/R; %Huan luyen mang ban dau t=linspace(T/Sample,bittransfer*T,bittransfer*Sample); s=randint(1,bittransfer); %Dieu che if TypeMod=='BPSK' bpsk; FiltedTransmit=loc(R,Info); else qpsk; FiltedTransmit=loc(R/2,Info); end %Kenh truyen [Noise,NoiseFad,NoiseCo]=chonnhieu; Receive=FiltedTransmit+Noise+NoiseFad+NoiseCo; %Giai dieu che va huan luyen mang if TypeMod=='BPSK' FiltedReceive=loc(R,Receive); FiltedLow=debpsk(FiltedReceive); ss=detectorinter(FiltedLow); for i=1:bittrain Target((i-1)*Sample+1:i*Sample)=(-2*s(i)+1)*A; end home Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 263 GVHD :Ths. Hoàng Đình Chiến net=huanluyen(FiltedLow(Sample+1:(bittrain+1)*Sample),Target); [AfterEq,du]=mang(net,FiltedLow); AfterEq(1)=[]; Decision=detector(AfterEq); else FiltedReceive=loc(R/2,Receive); FiltedLow=deqpsk(FiltedReceive); ss=detectorinter(FiltedLow); home for i=1:bittrain Target((i-1)*2*Sample+1:i*2*Sample)=(-2*s(2*i-1)+1)*A; end netOdd=huanluyen(FiltedLow(1,2*Sample+1:2*(bittrain+1)*Sample),Target); for i=1:bittrain Target((i-1)*2*Sample+1:i*2*Sample)=(2*s(2*i)-1)*A; end netEven=huanluyen(FiltedLow(2,2*Sample+1:2*(bittrain+1)*Sample),Target) AfterEq=[]; [AfterEq(1,:),duOdd]=mang(netOdd,FiltedLow(1,:)); [AfterEq(2,:),duEven]=mang(netEven,FiltedLow(2,:)); AfterEq(:,1)=[]; Decision=detector(AfterEq); end totals=bittransfer; epre=epre+sum(abs(s-ss)); berpre=epre/totals; etrain=etrain+sum(abs(s-Decision)); bertrain=etrain/totals; hinhve(berpre,bertrain,totals); pause(1); %Chay mo phong mang rep=N/bittransfer; if rep>1 t0=T*bittransfer; for i=2:rep t=linspace(t0+T/Sample,t0+bittransfer*T,bittransfer*Sample); s=randint(1,bittransfer); %Dieu che if TypeMod=='BPSK' Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 264 GVHD :Ths. Hoàng Đình Chiến bpsk; FiltedTransmit=loc(R,Info); else qpsk; FiltedTransmit=loc(R/2,Info); end %Kenh truyen [Noise,NoiseFad,NoiseCo]=chonnhieu; Receive=FiltedTransmit+Noise+NoiseFad+NoiseCo; %Giai dieu che if TypeMod=='BPSK' FiltedReceive=loc(R,Receive); FiltedLow=debpsk(FiltedReceive); ss=detectorinter(FiltedLow); [AfterEq,du]=mang(net,FiltedLow,du); Decision=detector(AfterEq); else FiltedReceive=loc(R/2,Receive); FiltedLow=deqpsk(FiltedReceive); ss=detectorinter(FiltedLow); AfterEq=[]; [AfterEq(1,:),duOdd]=mang(netOdd,FiltedLow(1,:)); [AfterEq(2,:),duEven]=mang(netEven,FiltedLow(2,:)); AfterEq(:,1)=[]; Decision=detector(AfterEq); end totals=totals+bittransfer; epre=epre+sum(abs(s-ss)); berpre=epre/totals; etrain=etrain+sum(abs(s-Decision)); bertrain=etrain/totals; hinhve(berpre,bertrain,totals); pause(1); t0=t0+T*bittransfer; end end msgbox('The program finished') Chương trình điều chế BPSK không có nhiễu (bpsk.m) function bpsk global R Fc s bittransfer Info Sample A t; Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 265 GVHD :Ths. Hoàng Đình Chiến Info=[]; ss=[0 1]; T=1/R; tt=linspace(T/Sample,2*T,2*Sample); wt=2*pi*Fc*tt; ref=A*cos(wt+ss(ceil(tt*R-0.1/Sample))*pi); ref=reshape(ref,Sample,2)'; for i=1:bittransfer Info((i-1)*Sample+1:i*Sample)=ref(s(i)+1,:); end clear T ss ref tt i wt; Chương trình điều chế QPSK không có nhiễu (bpsk.m) function qpsk global Fc bittransfer R s Info A Sample; Info=[]; sOdd =[0 0 0 0 1 1 1 1]; sEven=[0 0 1 1 0 0 1 1]; T=1/R; tt=linspace(T/Sample,8*T,8*Sample); wt=2*pi*Fc*tt; ref=A*(cos(wt+sOdd(ceil(tt*R-0.1/Sample))*pi)-sin(wt+sEven(ceil(tt*R- 0.1/Sample))*pi)); ref=reshape(ref,2*Sample,4)'; for i=1:bittransfer/2 Info((i-1)*2*Sample+1:i*2*Sample)=ref(2*s(2*i-1)+s(2*i)+1,:); end clear wt sEven sOdd ref T tt; Chương trình giải điều chế BPSK không có nhiễu (debpsk.m) function [out]=debpsk(signal) global Fc t R bittransfer Sample; wt=2*pi*Fc*t; y=2*cos(wt); PreDeModulated=signal.*y; out=lowpass(R,PreDeModulated); Chương trình giải điều chế QPSK không có nhiễu (debpsk.m) function [out]=deqpsk(signal) global R Fc t bittransfer Sample ; Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 266 GVHD :Ths. Hoàng Đình Chiến wt=2*pi*Fc*t; y=2*cos(wt); z=2*sin(wt); PreDeModulated1=signal.*y; PreDeModulated2=signal.*z; out(1,:)=lowpass(R/2,PreDeModulated1); out(2,:)=lowpass(R/2,PreDeModulated2); Chương trình thiết kế bộ lọc băng thông BPF (loc.m) % Fb : tần số bit thực % Với BPSK Fb=R % Với QPSK Fb=R/2 function out=loc(Fb,signal); global Fc Sample R; Fs=Sample*R; %Dung ButterWorth bac=5; passband=[Fc-Fb Fc+Fb]/(Fs/2); [Bb Ab]=butter(bac,passband); out=filter(Bb,Ab,signal); clear passband bac Bb Ab; Chương trình thiết kế bộ lọc thông thấp LPF (lowpass.m) function out=lowpass(Fb,signal); global Sample R Fc; Fs=Sample*R; %Dung ButterWorth bac=5; passlow=Fc/(Fs/2); [Bb Ab]=butter(bac,passlow); out=filter(Bb,Ab,signal); clear passband bac Bb Ab; Chương trình lưu các thông số cần cho mạng Neural Networks (luutrain.m) function luutrain; FcnName=['compet ';'hardlim ';'hardlims';'logsig ';'poslin ';'purelin ';'radbas ';'satlin ';'satlins ';'softmax ';'tansig ';'tribas ']; HPopupNetworks=findobj('tag','PopupNetworks'); HPopupNetworks=get(HPopupNetworks,'Value'); [...]... 'BackgroundColor',[0.8 0.8078 431 37254902 'FontName','Vni-book', 'FontSize',11, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[220 31 9.25 100 15], 'String','After LPF Rev', 'Style','Text', 'Tag','FiltedLow'); Lê Thanh Nhật-Trương Ánh Thu 277 0.8078 431 37254902], 0.8078 431 37254902], 0.8078 431 37254902], 0.8078 431 37254902], GVHD :Ths Hoàng Đình Chiến Chương 3 : Chương trình nguồn h1 = uicontrol('Parent',h,... 0.8078 431 37254902 0.8078 431 37254902], 'FontName','Vni-book', 'FontSize',11, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[15 36 5.25 75 15], 'String','Data Input', 'Style','Text', 'Tag','S', 'Value',1); h1 = uicontrol('Parent',h, 'Units','points', 'BackgroundColor',[0.8 0.8078 431 37254902 0.8078 431 37254902], Lê Thanh Nhật-Trương Ánh Thu 276 GVHD :Ths Hoàng Đình Chiến Chương 3 : Chương. .. 'Units','points', 'BackgroundColor',[0.8 0.8078 431 37254902 0.8078 431 37254902], 'FontName','Vni-book', 'FontSize',11, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[440 36 5.25 77 15], 'String','Without Eq', 'Style','Text', 'Tag','SS'); h1 = uicontrol('Parent',h, 'Units','points', 'BackgroundColor',[0.8 0.8078 431 37254902 0.8078 431 37254902], 'FontName','Vni-book', 'FontSize',11,... 'Units','points', 'BackgroundColor',[0.8 039 2156862 0.8 039 215686 0.8 039 2156861], 'FontSize',12, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[447 120 150 16], 'String','Modulation : QPSK', 'Style','text', 'Tag','TextMod'); end Lê Thanh Nhật-Trương Ánh Thu 275 GVHD :Ths Hoàng Đình Chiến Chương 3 : Chương trình nguồn BER2=['Real BER before train ' num2str(berpre,5)]; BER3=['Real BER after train '... :Ths Hoàng Đình Chiến Chương 3 : Chương trình nguồn h1 h1 h1 h1 'ListboxTop',0, 'Position',[ 135 38 6.75 28.5 15], 'String','Axes 2', 'Style','text', 'Tag','Axes2'); = uicontrol('Parent',h, 'Units','points', 'BackgroundColor',[0.79215686278 0.79215686278 0.7921568627498], 'FontName','vni-times', 'FontSize',10, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position', [31 0 38 6.75 28.5 15], 'String','Axes... 'FontName','vni-times', Lê Thanh Nhật-Trương Ánh Thu 274 GVHD :Ths Hoàng Đình Chiến Chương 3 : Chương trình nguồn 'FontSize',12, 'ListboxTop',0, 'Position',[495 215 60 20], 'String','Spectrum', 'Tag','ButtonSpectrum'); h1 = uicontrol('Parent',h, 'Units','points', 'BackgroundColor',[0.8 039 2157451 0.8 039 27451 0.8 039 21568627451], 'FontSize',12, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[447... 'Position',[105 36 8 10 10], 'Style','checkbox', 'Tag','AxesS', 'Value',1); h1 = uicontrol('Parent',h, 'Units','points', 'BackgroundColor',[0.75294117647 0.7529411764705 0.75294117647], 'Callback','global axesdown S;ve(gcbo,axesdown,S,1);', 'ListboxTop',0, 'Position',[1 43 368 10 10], 'Style','checkbox', 'Tag','AxesS'); Lê Thanh Nhật-Trương Ánh Thu 278 GVHD :Ths Hoàng Đình Chiến Chương 3 : Chương trình. .. Nhật-Trương Ánh Thu 268 GVHD :Ths Hoàng Đình Chiến Chương 3 : Chương trình nguồn HTextTransfer=findobj('tag','TextTransferDown'); set(HTextTransfer,'Visible','off'); HTextLayer1=findobj('tag','TextLayer1'); set(HTextLayer1,'Visible','off'); HTextLayer2=findobj('tag','TextLayer2'); set(HTextLayer2,'Visible','off'); HTextLayer3=findobj('tag','TextLayer3'); set(HTextLayer3,'Visible','off'); for i=1:HSliderLayer... 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[ 537 .5 38 6.75 28.5 15], 'String','Axes 2', 'Style','text', 'Tag','Axes2'); else axesup=findobj('tag','Axesve1'); Lê Thanh Nhật-Trương Ánh Thu 282 GVHD :Ths Hoàng Đình Chiến Chương 3 : Chương trình nguồn axes(axesup); line(1,1)=plot(t(1:sobit*Sample),S); set(gca,'tag','Axesve1'); set(gca,'Position',[0. 13 0.48 0.60 0.24]); xlabel('Time (s)'); ylabel('Amplitude');... 'BackgroundColor',[0.8 0.8078 431 37254902 'FontName','Vni-book', 'FontSize',11, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[220 36 5.25 72 15], 'String','Rev Sig', 'Style','Text', 'Tag','Receive'); = uicontrol('Parent',h, 'Units','points', 'BackgroundColor',[0.8 0.8078 431 37254902 'FontName','Vni-book', 'FontSize',11, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[220 34 2.25 100 15], . Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh Thu 257 GVHD :Ths. Hoàng Đình Chiến CHƯƠNG 3 CHƯƠNG TRÌNH NGUỒN Có tất cả 32 file chương trình. out=out+Coi; i=i+1; end Chương trình chạy mô phỏng (callbackrun.m) function callbackrun; Chương 3 : Chương trình nguồn Lê Thanh Nhật-Trương Ánh

Ngày đăng: 23/01/2014, 06:20

Tài liệu cùng người dùng

Tài liệu liên quan