Chương trình nguồn

29 666 0
Chương trình nguồn

Đ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 trình nguồn

Chương 3 : Chương trình nguồnCHƯƠNG 3CHƯƠNG TRÌNH NGUỒNCó 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ầnclear 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 callbacknextglobal Fc R N Sample TypeMod;Sample=round(20*Fc/R);%Chon loai dieu che tin hieuHModulation=findobj('tag','modu'); HModulation=get(HModulation,'Value');if HModulation==1 TypeMod='BPSK';else TypeMod='QPSK';Lê Thanh Nhật-Trương Ánh Thu 1 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồnend%Chon cac loai nhieuloainhieu;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 SampleHCheckNoise=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');Lê Thanh Nhật-Trương Ánh Thu 2 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồnSourceCo=str2num(SourceCo);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;endif 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;endChương trình xét chọn loại nhiễu (chonnhieu.m)function [Noise,NoiseFading,NoiseCoChannel]=chonnhieu;load loainhieu ;if HCheckNoise==1Lê Thanh Nhật-Trương Ánh Thu 3 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồn if HRadioSNR==1 Noise=whitenoise(SNRNoise); %Lay nhieu White Noise theo SNR else Noise=gaussnoise(Means,Vars); %Lay nhieu Gaussian endelse Noise=0;endif HCheckFading==1 NoiseFading=fading; %Lay nhieu Fadingelse NoiseFading=0;end if HCheckCoChannel==1 NoiseCoChannel=cochannel; %Lay nhieu CoChannelelse NoiseCoChannel=0;endChươ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)>0Lê Thanh Nhật-Trương Ánh Thu 4 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồn Fadi(bittransfer*Sample:-1:PhaseShiftFad(i)+1)=Fadi(bittransfer*Sample-PhaseShiftFad(i):-1:1); Fadi(1:1:PhaseShiftFad(i))=0; 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;endChươ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;endLê Thanh Nhật-Trương Ánh Thu 5 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồnChương trình chạy mô phỏng (callbackrun.m)function callbackrun;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ằngluutrain;set(gcf,'Visible','off');t0=0;epre=0;etrain=0;Sample=round(20*Fc/R);T=1/R;%Huan luyen mang ban daut=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 mangif TypeMod=='BPSK' FiltedReceive=loc(R,Receive); FiltedLow=debpsk(FiltedReceive); ss=detectorinter(FiltedLow);Lê Thanh Nhật-Trương Ánh Thu 6 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồn for i=1:bittrain Target((i-1)*Sample+1:i*Sample)=(-2*s(i)+1)*A; end home 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);endtotals=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 mangrep=N/bittransfer;if rep>1t0=T*bittransfer;for i=2:rept=linspace(t0+T/Sample,t0+bittransfer*T,bittransfer*Sample);Lê Thanh Nhật-Trương Ánh Thu 7 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồns=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 cheif 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);endtotals=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 endmsgbox('The program finished')Lê Thanh Nhật-Trương Ánh Thu 8 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồnChương trình điều chế BPSK không có nhiễu (bpsk.m)function bpskglobal R Fc s bittransfer Info Sample A t;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,:);endclear T ss ref tt i wt;Chương trình điều chế QPSK không có nhiễu (bpsk.m)function qpskglobal 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,:);endclear 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);Lê Thanh Nhật-Trương Ánh Thu 9 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồnChươ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 ;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/2function out=loc(Fb,signal);global Fc Sample R;Fs=Sample*R;%Dung ButterWorthbac=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 ButterWorthbac=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 '];Lê Thanh Nhật-Trương Ánh Thu 10 GVHD :Ths. Hoàng Đình Chiến [...]... nghiệm cho nên chương trình không hoàn hảo, mong quý thầy cô và các bạn xem xét góp ý. Từ ý tưởng của đề tài này ta có thể phát triển hơn nữa, ứng dụng Neural Networks vào bộ cân bằng mù, đưa ra những mô hình mạng có thể triệt nhiễu tốt mà không cần biết trước chuỗi bit huấn luyện. Lê Thanh Nhật-Trương Ánh Thu 29 GVHD :Ths. Hoàng Đình Chieán Chương 3 : Chương trình nguồn Chương trình giải điều... Chiến Chương 3 : Chương trình nguồn 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; 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. .. HEditSNRCo=findobj('tag','EditSNRCo'); SNRCo=get(HEditSNRCo,'String'); SNRCo=str2num(SNRCo); HSourceCo=findobj('tag','SourceCo'); SourceCo=get(HSourceCo,'String'); Lê Thanh Nhật-Trương Ánh Thu 2 GVHD :Ths. Hoàng Đình Chieán Chương 3 : Chương trình nguồn Chương trình chạy mô phỏng (callbackrun.m) function callbackrun; global Fc R N A t t0 Sample TypeMod s bittrain bittransfer; global Info FiltedTransmit Receive FiltedReceive FiltedLow ss; global... 10 10], Leâ Thanh Nhật-Trương Ánh Thu 24 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồn P(i,i:col)=signal(1:col-i+1); end if HSliderTapDelay>2 for i=HSliderTapDelay:-1:2 P(i,1:i-1)=du(HSliderTapDelay-i+1:HSliderTapDelay-1); end end end dem=sim(net,P); dura=P(1,col-HSliderTapDelay+2:col); clear col P i; Chương trình tính SNR (totalSNR.m) function totalSNR global TotalSNR; %Cong... Đình Chiến Chương 3 : Chương trình nguồn if HRadioSNR==1 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... i=2:rep t=linspace(t0+T/Sample,t0+bittransfer*T,bittransfer*Sample); Lê Thanh Nhật-Trương Ánh Thu 7 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồn end %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);... 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); Lê Thanh Nhật-Trương Ánh Thu 9 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồn HTextPerf=findobj('tag','TextPerfFunction'); ... Chiến Chương 3 : Chương trình nguồn Fadi(bittransfer*Sample:-1:PhaseShiftFad(i) +1)=Fadi(bittransfer*Sample-PhaseShiftFad(i):-1:1); Fadi(1:1:PhaseShiftFad(i))=0; 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. .. 'FontSize',11, 'HorizontalAlignment','left', 'ListboxTop',0, 'Position',[220 319.25 100 15], Lê Thanh Nhật-Trương Ánh Thu 21 GVHD :Ths. Hoàng Đình Chiến Chương 3 : Chương trình nguồn 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.. .Chương 3 : Chương trình nguồn h1 = uicontrol('Parent',h, 'Units','points', 'BackgroundColor',[0.8 0.807843137254902 0.807843137254902], 'FontName','Vni-book', . Chương 3 : Chương trình nguồnCHƯƠNG 3CHƯƠNG TRÌNH NGUỒNCó 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. Chiến Chương 3 : Chương trình nguồnend%Chon cac loai nhieuloainhieu;totalSNR;clear HModulation;set(gcf,'Visible','off');train ;Chương trình

Ngày đăng: 03/09/2012, 15:59

Từ khóa liên quan

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

Tài liệu liên quan