Tải bản đầy đủ (.pdf) (29 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (56.04 KB, 29 trang )

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');

Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 267 GVHD :Ths. Hoàng Đình Chiến
HPopupLearn=findobj('tag','PopupLearn');
HPopupLearn=get(HPopupLearn,'Value');

HSliderTapDelay=findobj('tag','SliderTapDelay');
HSliderTapDelay=get(HSliderTapDelay,'Value');

HSliderLayer=findobj('tag','SliderLayer');
HSliderLayer=get(HSliderLayer,'Value');

HPopupPerf=findobj('tag','PopupPerf');
HPopupPerf=get(HPopupPerf,'Value');

for i=1:HSliderLayer
str=num2str(i);
H=findobj('tag',['SliderLayer',str]);
Neuron(i)=get(H,'Value');
H=findobj('tag',['PopupTransfer',str]);
TransferFcn(i,:)=FcnName(get(H,'Value'),:);
end

clear H str i;

save luutrain


Chương trình chọn loại mạng Neural Networks (calbacknetworks.m)

function callbacknetworks;

HPopupNetworks=findobj('tag','PopupNetworks');
h=get(HPopupNetworks,'Value');

if h==1|h==2|h==3|h==4|h==5|h==6|h==7|h==8|h==9|h==10|h==11|h==12
HTextLearn=findobj('tag','TextLearn');
set(HTextLearn,'Visible','on');

HPopupLearn=findobj('tag','PopupLearn');
set(HPopupLearn,'Visible','on');

HTextLayer=findobj('tag','TextLayer');
set(HTextLayer,'Visible','on');

HEditLayer=findobj('tag','EditLayer');
set(HEditLayer,'Visible','on','string',num2str(3));

HSliderLayer=findobj('tag','SliderLayer');
set(HSliderLayer,'Visible','on','Value',3);
HSliderLayer=get(HSliderLayer,'Value');

HTextPerf=findobj('tag','TextPerfFunction');

set(HTextPerf,'Visible','on');

HPopupPerf=findobj('tag','PopupPerf');
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 268 GVHD :Ths. Hoàng Đình Chiến
set(HPopupPerf,'Visible','on');

HTextNeuron=findobj('tag','TextNeuronUp');
set(HTextNeuron,'Visible','on');

HTextTransfer=findobj('tag','TextTransferUp');
set(HTextTransfer,'Visible','on');

for i=1:HSliderLayer
str=num2str(i);
H=findobj('tag',['TextLayer',str]);
set(H,'Visible','on');
H=findobj('tag',['EditLayer',str]);
set(H,'Visible','on');
H=findobj('tag',['SliderLayer',str]);
set(H,'Visible','on');
H=findobj('tag',['PopupTransfer',str]);
set(H,'Visible','on');
end

else
HTextLearn=findobj('tag','TextLearn');
set(HTextLearn,'Visible','off');

HPopupLearn=findobj('tag','PopupLearn');

set(HPopupLearn,'Visible','off');

HTextLayer=findobj('tag','TextLayer');
set(HTextLayer,'Visible','off');

HEditLayer=findobj('tag','EditLayer');
set(HEditLayer,'Visible','off');

HSliderLayer=findobj('tag','SliderLayer');
set(HSliderLayer,'Visible','off');
HSliderLayer=get(HSliderLayer,'Value');

HTextPerf=findobj('tag','TextPerfFunction');
set(HTextPerf,'Visible','off');

HPopupPerf=findobj('tag','PopupPerf');
set(HPopupPerf,'Visible','off');

HTextNeuron=findobj('tag','TextNeuronUp');
set(HTextNeuron,'Visible','off');

HTextNeuron=findobj('tag','TextNeuronDown');
set(HTextNeuron,'Visible','off');

HTextTransfer=findobj('tag','TextTransferUp');
set(HTextTransfer,'Visible','off');

Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 269 GVHD :Ths. Hoàng Đình Chiế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
str=num2str(i);
H=findobj('tag',['TextLayer',str]);
set(H,'Visible','off');
H=findobj('tag',['EditLayer',str]);
set(H,'Visible','off');
H=findobj('tag',['SliderLayer',str]);
set(H,'Visible','off');
H=findobj('tag',['PopupTransfer',str]);
set(H,'Visible','off');
end
end

Chương trình huấn luyện mạng Neural Networks (huanluyen.m)

function net=huanluyen(signal,Target);
load luutrain;

hamhl={'trainbr';'trainlm';'trainoss';'trainbfg';'trainscg';'traincgb';

'traincgp';'traincgf';'trainrp';'traingdx';'traingdm';'traingd'};
hamhoc={'learngd';'learngdm'};
hamss={'mse';'msereg';'mae';'sse'};

h=HPopupNetworks;
if h==1|h==2|h==3|h==4|h==5|h==6|h==7|h==8|h==9|h==10|h==11|h==12
BTF=hamhl{h};
BLF=hamhoc{HPopupLearn};
PF=hamss{HPopupPerf};

col=length(signal);

P=zeros(HSliderTapDelay,col);
for i=1:HSliderTapDelay
P(i,i+1:col)=signal(1:col-i);
rang(i,:)=minmax(signal);
end

tf=cellstr(TransferFcn);
figure;
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 270 GVHD :Ths. Hoàng Đình Chiến
net=newff(rang,Neuron,tf,BTF,BLF,PF);
net.trainParam.lr=0.01;
net.trainParam.show=20;
net.trainParam.epochs=100;
net.trainParam.goal=0.1;
net=train(net,P,Target);
close(gcf);
elseif h==13 %Adaptive Linear net

col=length(signal);

P=zeros(HSliderTapDelay,col);
for i=1:HSliderTapDelay
P(i,i+1:col)=signal(1:col-i);
end

net=newlind(P,Target);
elseif h==14 %Batch Static
col=length(signal);

P=zeros(HSliderTapDelay,col);
for i=1:HSliderTapDelay
P(i,i+1:col)=signal(1:col-i);
rang(i,:)=minmax(signal);
end

lr=maxlinlr(P,'bias')
net=newlin(rang,1,0,lr);
net.trainParam.epochs=100;
net.trainParam.goal=0.01;
net=train(net,P,Target);
end

Chương trình mô phỏng mạng Neural Networks (mang.m)

function [dem,dura]=mang(net,signal,du)
load luutrain HSliderTapDelay;
global Sample bittransfer;
if nargin==2

col=bittransfer*Sample+1;
P=zeros(HSliderTapDelay,col);
for i=1:HSliderTapDelay
P(i,i+1:col)=signal(1:col-i);
end
else
col=bittransfer*Sample;
P=zeros(HSliderTapDelay,col);
for i=1:HSliderTapDelay
P(i,i:col)=signal(1:col-i+1);
end
if HSliderTapDelay>2
for i=HSliderTapDelay:-1:2
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 271 GVHD :Ths. Hoàng Đình Chiến
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 suat tin hieu

HEditAmplitude=findobj('Tag','EditAmplitude');
Am=get(HEditAmplitude,'String');
Am=str2num(Am);
Ps=0.5*Am^2;
clear Am HEditAmplitude;

%Cong suat nhieu WhiteNoise
HCheck=findobj('Tag','CheckNoise');
Check=get(HCheck,'Value');
if Check==1
HRadioSNR=findobj('Tag','RadioSNR');
SNRW=get(HRadioSNR,'Value');
if SNRW==1
HEditSNR=findobj('Tag','EditSNR');
SNRW=get(HEditSNR,'string');
SNRW=str2num(SNRW);
Pw=Ps*10^(-SNRW/10);
clear HEditSNR SNRW;
else
HEditMean=findobj('Tag','EditMean');
Mean=get(HEditMean,'String');
Mean=str2num(Mean);
HEditVariance=findobj('Tag','EditVariance');
Var=get(HEditVariance,'string');
Var=str2num(Var);
Pw=Mean^2+0.5*Var;
clear HEditMean Mean HEditVariance Var;
end
clear SNRW HRadioSNR;
else

Pw=0;
end

%Cong suat nhieu Fading
HCheck=findobj('Tag','CheckFading');
Check=get(HCheck,'Value');
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 272 GVHD :Ths. Hoàng Đình Chiến
if Check==1
HEditSNRFad=findobj('Tag','EditSNRFad');
SNRF=get(HEditSNRFad,'string');
SNRF=str2num(SNRF);
Pf=Ps*10^(-SNRF/10);
clear HEditSNRFad SNRF;
else
Pf=0;
end

%Cong suat nhieu CoChannel
HCheck=findobj('Tag','CheckCoChannel');
Check=get(HCheck,'Value');
if Check==1
HEditSNRCo=findobj('Tag','EditSNRCo');
SNRC=get(HEditSNRCo,'string');
SNRC=str2num(SNRC);
Pc=Ps*10^(-SNRC/10);
clear HEditSNRCo SNRC;
else
Pc=0;
end


clear HCheck Check

%Tinh Total SNR
HStaticTotalSNR=findobj('tag','StaticTotalSNR');
Pn=Pw+Pf+Pc;
if Pn==0
set(HStaticTotalSNR,'Visible','off');
TotalSNR=100000;
else
TotalSNR=10*log10(Ps/(Pw+Pf+Pc));
Cau=['Total Signal Noise Ratio : ' num2str(TotalSNR,3) ' dB'];
set(HStaticTotalSNR,'Visible','on');
set(HStaticTotalSNR,'string',Cau);
end

clear Pn Ps Pc Pw Pf Cau HStaticTotalSNR;


Chương trình thiết kế bộ quyết đònh (detector.m)

function out=detector(signal);
global Sample bittransfer R TypeMod s;
T=1/R;

if TypeMod=='BPSK'
offset=1.5*Sample;
for i=1:bittransfer-1
tong=signal((i-1)*Sample+offset);
if tong>0

Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 273 GVHD :Ths. Hoàng Đình Chiến
out(i)=0;
else
out(i)=1;
end
end
out(bittransfer)=s(bittransfer);
else %Nghia la QPSK
offset=1.5*2*Sample;

for i=1:bittransfer/2-1
tong=signal(1,(i-1)*2*Sample+offset);
if tong>0
ssOdd(i)=0;
else
ssOdd(i)=1;
end
end
ssOdd(bittransfer/2)=s(bittransfer-1);

for i=1:bittransfer/2-1
tong=signal(2,(i-1)*2*Sample+offset);
if tong>0
ssEven(i)=1;
else
ssEven(i)=0;
end
end
ssEven(bittransfer/2)=s(bittransfer);


out(1:2:bittransfer-1)=ssOdd;
out(2:2:bittransfer)=ssEven;
end

Chương trình xuất hiện cửa sổ hiển thò kết quả (hinhve.m)

function hinhve(berpre,bertrain,totals)
global Fc R t Sample Info FiltedTransmit Receive FiltedReceive SS;
global DECISION axesup axesdown;
global FiltedLow AfterEq Decision TypeMod TotalSNR s ss line S sobit;

sobit=10;
line=zeros(2,9);
S=[];
SS=[];
DECISION=[];

for i=1:sobit
S((i-1)*Sample+1:i*Sample)=s(i);
end

for i=1:sobit-1
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 274 GVHD :Ths. Hoàng Đình Chiến
SS(i*Sample+1:(i+1)*Sample)=ss(i);
DECISION(i*Sample+1:(i+1)*Sample)=Decision(i);
end
SS(1:Sample)=0;
DECISION(1:Sample)=0;


Hve=findobj('Tag','ve');
if isempty(Hve)
h=figure('Name','Modulation and Demodulation',
'NumberTitle','off','Position',[0 0 800 560],
'CloseRequestFcn','closereq;Htrain=findobj(''Tag'',''train'');
set(Htrain,''Visible'',''on'');clear Htrain;',
'tag','ve');
subplot(2,1,1);
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');
title('Data input');
axesup=gca;


subplot(2,1,2);
line(2,9)=plot(t(1:sobit*Sample),DECISION,'r');
set(gca,'tag','Axesve2');
set(gca,'Position',[0.13 0.11 0.60 0.24]);
xlabel('Time (s)');
ylabel('Amplitude');
title('Data output');
axesdown=gca;

Hz=['Carrier Freq. ' num2str(Fc/1000) ' KHz'];
Rate=['Bit Rate ' num2str(R/1000) ' Kbps'];


h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117647 0.75296470588 0.752941176588],

'Callback','close(gcf);Htrain=findobj(''tag'',''train'');set(Htrain,''V
isible'',''on'');clear Htrain;',
'FontName','vni-times',
'FontSize',12,
'ListboxTop',0,
'Position',[495 255 60 20],
'String','Back',
'Tag','ButtonTrain');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.752941176488 0.751176470588 0.75294110588],
'Callback','set(gcf,''visible'',''off'');spectrum;',
'FontName','vni-times',
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 275 GVHD :Ths. Hoàng Đình Chiến
'FontSize',12,
'ListboxTop',0,
'Position',[495 215 60 20],
'String','Spectrum',
'Tag','ButtonSpectrum');

h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.80392157451 0.803927451 0.803921568627451],
'FontSize',12,
'HorizontalAlignment','left',

'ListboxTop',0,
'Position',[447 140 120 16],
'String',Rate,
'Style','text',
'Tag','TextBitRate');

h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8039215651 0.80392127451 0.8039215627451],
'FontSize',12,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[447 160 150 16],
'String',Hz,
'Style','text',
'Tag','TextFreq');

if TypeMod=='BPSK'
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8039218627 0.80392156862 0.80392156862],
'FontSize',12,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[447 120 150 16],
'String','Modulation : BPSK',
'Style','text',
'Tag','TextMod');
else
h1 = uicontrol('Parent',h,

'Units','points',
'BackgroundColor',[0.80392156862 0.8039215686 0.80392156861],
'FontSize',12,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[447 120 150 16],
'String','Modulation : QPSK',
'Style','text',
'Tag','TextMod');
end

Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 276 GVHD :Ths. Hoàng Đình Chiến
BER2=['Real BER before train ' num2str(berpre,5)];

BER3=['Real BER after train ' num2str(bertrain,5)];

h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.803921568621 0.803921568627 0.80392156851],
'FontSize',12,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[447 80 150 16],
'String',BER2,
'Style','text',
'Tag','TextBERrealpre');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.80392156862 0.8039215651 0.803921568627],

'FontSize',12,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[447 60 150 16],
'String',BER3,
'Style','text',
'Tag','TextBERrealtrain');

Totalbit=['Sum of bit is transfered ' num2str(totals)];
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.803921568627 0.803921568621 0.80392156864],
'FontSize',12,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[447 40 150 16],
'String',Totalbit,
'Style','text',
'Tag','TextTotalbit');

h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[15 365.25 75 15],
'String','Data Input',
'Style','Text',

'Tag','S',
'Value',1);
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 277 GVHD :Ths. Hoàng Đình Chiến
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[15 342.25 73 15],
'String','Modulate',
'Style','Text',
'Tag','Info');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[15 319.25 102 15],
'String','Transmit Sig',
'Style','Text',
'Tag','FiltedTransmit');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',

'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[220 365.25 72 15],
'String','Rev Sig',
'Style','Text',
'Tag','Receive');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[220 342.25 100 15],
'String','After BPF Rev',
'Style','Text',
'Tag','FiltedReceive');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[220 319.25 100 15],
'String','After LPF Rev',
'Style','Text',
'Tag','FiltedLow');
Chương 3 : Chương trình nguồn

Lê Thanh Nhật-Trương Ánh Thu 278 GVHD :Ths. Hoàng Đình Chiến
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[440 365.25 77 15],
'String','Without Eq',
'Style','Text',
'Tag','SS');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[440 342.25 70 15],
'String','After Eq',
'Style','Text',
'Tag','AfterEq');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.8 0.807843137254902 0.807843137254902],
'FontName','Vni-book',
'FontSize',11,
'HorizontalAlignment','left',
'ListboxTop',0,

'Position',[440 319.25 72.75 15],
'String','With Eq',
'Style','Text',
'Tag','Decision',
'Value',1);

h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117647 0.75294117647 0.7529411764708],
'Callback','global axesup S;ve(gcbo,axesup,S,1);',
'ListboxTop',0,
'Position',[105 368 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',[143 368 10 10],
'Style','checkbox',
'Tag','AxesS');
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 279 GVHD :Ths. Hoàng Đình Chiến
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.752941176470 0.752941176488 0.75294117058],
'Callback','global axesup Info;ve(gcbo,axesup,Info,2);',
'ListboxTop',0,

'Position',[105 346 10 10],
'Style','checkbox',
'Tag','AxesInfo');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.752941176478 0.752941170588 0.75294117647],
'Callback','global axesdown Info;ve(gcbo,axesdown,Info,2);',
'ListboxTop',0,
'Position',[143 346 10 10],
'Style','checkbox',
'Tag','AxesInfo');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117647 0.752941176588 0.752941176458],
'Callback','global axesup
FiltedTransmit;ve(gcbo,axesup,FiltedTransmit,3);',
'ListboxTop',0,
'Position',[105 321 10 10],
'Style','checkbox',
'Tag','AxesFiltedTransmit');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.7529411764 0.752941188 0.75294117588],
'Callback','global axesdown FiltedTransmit
;ve(gcbo,axesdown,FiltedTransmit,3);',
'ListboxTop',0,
'Position',[143 321 10 10],
'Style','checkbox',
'Tag','AxesFiltedTransmit');
h1 = uicontrol('Parent',h,

'Units','points',
'BackgroundColor',[0.752941176470 0.75294170588 0.752941176470],
'Callback','global axesup Receive;ve(gcbo,axesup,Receive,4);',
'ListboxTop',0,
'Position',[320 368 10 10],
'Style','checkbox',
'Tag','AxesReceive');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117647 0.752941176588 0.752941176458],
'Callback','global axesdown Receive;ve(gcbo,axesdown,Receive,4);',

'ListboxTop',0,
'Position',[360 368 10 10],
'Style','checkbox',
'Tag','AxesReceive');
h1 = uicontrol('Parent',h,
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 280 GVHD :Ths. Hoàng Đình Chiến
'Units','points',
'BackgroundColor',[0.752941176478 0.75276470588 0.752941170588],
'Callback','global axesup
FiltedReceive;ve(gcbo,axesup,FiltedReceive,5);',
'ListboxTop',0,
'Position',[320 345.5 9.75 10.5],
'Style','checkbox',
'Tag','AxesFiltedReceive');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117647 0.75294117588 0.752941176470],

'Callback','global axesdown
FiltedReceive;ve(gcbo,axesdown,FiltedReceive,5);',
'ListboxTop',0,
'Position',[360 345.5 9.75 10.5],
'Style','checkbox',
'Tag','AxesFiltedReceive');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117648 0.75294117588 0.7529411760588],
'Callback','global axesup FiltedLow;ve(gcbo,axesup,FiltedLow,6);',

'ListboxTop',0,
'Position',[320 320.5 9.75 10.5],
'Style','checkbox',
'Tag','Axes1FiltedLow');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.7529411764 0.752941176588 0.7529411764788],
'Callback','global axesdown
FiltedLow;ve(gcbo,axesdown,FiltedLow,6);',
'ListboxTop',0,
'Position',[360 321 10 10],
'Style','checkbox',
'Tag','Axes2FiltedLow');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117688 0.752941176588 0.752941176588],
'Callback','global axesup SS;ve(gcbo,axesup,SS,7);',
'ListboxTop',0,
'Position',[516 368 10 10],

'Style','checkbox',
'Tag','AxesSS');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.7529411764 0.752941176 0.752941176470588],
'Callback','global axesdown SS;ve(gcbo,axesdown,SS,7);',
'ListboxTop',0,
'Position',[548.25 368 10 10],
'Style','checkbox',
'Tag','AxesSS');
h1 = uicontrol('Parent',h,
Chương 3 : Chương trình nguồn
Lê Thanh Nhật-Trương Ánh Thu 281 GVHD :Ths. Hoàng Đình Chiến
'Units','points',
'BackgroundColor',[0.752941176478 0.75294110588 0.752941174588],
'Callback','global axesup AfterEq;ve(gcbo,axesup,AfterEq,8);',
'ListboxTop',0,
'Position',[516 346 10 10],
'Style','checkbox',
'Tag','Axes1AfterEq');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117648 0.7529411760588 0.75294117608],
'Callback','global axesdown AfterEq;ve(gcbo,axesdown,AfterEq,8);',

'ListboxTop',0,
'Position',[548.25 346 10 10],
'Style','checkbox',
'Tag','Axes2AfterEq');
h1 = uicontrol('Parent',h,

'Units','points',
'BackgroundColor',[0.75294117647 0.75294117588 0.752941176588],
'Callback','global axesup DECISION;ve(gcbo,axesup,DECISION,9);',
'ListboxTop',0,
'Position',[516 321 10 10],
'Style','checkbox',
'Tag','AxesDECISION');
h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.75294117648 0.752941170588 0.75294117688],
'Callback','global axesdown DECISION;ve(gcbo,axesdown,DECISION,9);',

'ListboxTop',0,
'Position',[548.25 321 10 10],
'Style','checkbox',
'Tag','AxesDECISION',
'Value',1);

h1 = uicontrol('Parent',h,
'Units','points',
'BackgroundColor',[0.792156868 0.79215686298 0.792156862745098],
'FontName','vni-times',
'FontSize',10,
'HorizontalAlignment','left',
'ListboxTop',0,
'Position',[95 386.75 28.5 15],
'String','Axes 1',
'Style','text',
'Tag','Axes1');
h1 = uicontrol('Parent',h,

'Units','points',
'BackgroundColor',[0.792156862798 0.792156862798 0.79215686278],
'FontName','vni-times',
'FontSize',10,
'HorizontalAlignment','left',

×