1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

29 314 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 56,04 KB

Nội dung

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Ừ KHÓA LIÊN QUAN

w