You are on page 1of 14

Họ tên:Trần Công Lập

Lớp:KM17
MSSV:1751150033
GVHD:Nguyễn Thị Bé Tám
ỨNG DỤNG MATLAB TRONG KĨ THUẬT TRUYỀN SỐ LIỆU
I) CƠ SỞ LÝ THUYẾT:
1. Line coding:
Là quá trình chuyển đổi dữ liệu số sang các tín hiệu số. Bằng kỹ thuật này chúng ta chuyển đổi
một chuỗi các bit sang một tín hiệu số. Ở phía người người gửi dữ liệu số được mã hóa thành tín
hiệu số và ở phía người nhận những dử liệu số được tái tạo lại bằng cách giải mã các tín hiệu số.

Figure 1.1. Line coding and decoding.


Sau đây là các thuộc tính của line coding:
Băng thông truyền (Transmission bandwidth): Đối với mã dòng,băng thông truyền tải phải càng
nhỏ càng tốt.
Hiệu quả nguồn điện (Power effciency): Đối với băng thông nhất định và ti lệ phát hiện lỗi được
định rỏ.Công suất được truyền cho mã dòng nên càng nhỏ càng tốt.
Sác xuất gặp lỗi (Probability of Error): Tỉ lệ gặp lỗi sẽ giảm.
Khả năng phát hiện và sửa lỗi (Error detection and correction capability): Nó có khả năng phát
hiện và sửa lỗi phát hiện đó.Ví dụ: trong trường hợp lưỡng cực (bipolar) tín hiệu lỗi sẽ gây ra
xâm phạm lưỡng cực và do đó có thể dễ dàng được phát hiện.
Mật độ điện áp (Power density) : Mật độ điện áp có nhiều thuận lợi.
Nó có thể trích xuất thông tin thời gian hoặc đồng hồ từ tín hiệu.
Minh bạch (Transparency): Nó phải có khả năng truyền một tín hiệu số một cách chính xác bất
kể mẫu 1s và 0s.
1.2 Line coding scheme:
 Chúng ta có thể tạm chia sơ đồ mã hóa đường truyền (line coding) thành 5
loại: Chúng ta có Unipolar,Polar,Bipolar,Multilevel,Multitransition.
 Trong đó 2 mã đường truyền chính là:Unipolar và Polar

Figure 1.2:

II.Tổng quan MATLAB


1.Giới thiệu MATLAB
Matlab được sử dụng rộng rãi như công cụ tính toán trong các lĩnh vực khoa học và kĩ thuật,bao
gồm các lĩnh vực vật lí hóa học,toán học và công nghệ.MATLAB được sử dụng trong một loạt
các ứng dụng bao gồm:
-Sử lý tín hiệu và truyền thông.
-Sử lý hình ảnh và video.
-Hệ thống điều khiển.
-Kiểm tra và đo lường.
-Tính toán và mô phỏng.

2.Ứng dụng MATLAB


- MATLAB là ngôn ngữ lập trình cao cấp, cho phép tính toán các con số, hình dung và phát triển
ứng dụng.
- Cung cấp môi trường tương tác để khảo sát, thiết kế và giải quyết các vấn đề.
Cung cấp thư viện lớn các hàm toán học cho đại số tuyến tín, thống kê, phân tích Fourier, bộ
lọc, tối ưu hóa, tích phân và giải các phương trình vi phân bình thường.
- MATLAB cung cấp các đồ thị được tích hợp sẵn để hiển thị hình ảnh dữ liệu và các công cụ để
tạo đồ thị tùy chỉnh.
- Giao diện lập trình của MATLAB cung cấp các công cụ phát triển để nâng cao khả năng bảo trì
chất lượng mã và tối đa hóa hiệu suất.
- Cung cấp các công cụ để xây dựng các ứng dụng với các giao diện đồ họa tùy chỉnh.
- Cung cấp các hàm để tích hợp các thuật toán dựa trên MATLAB với các ứng dụng bên ngoài
và các ngôn ngữ khác như C, Java, NET và Microsoft Excel.
-Trong môn kĩ thuật truyền số liệu MATLAB được xem như cánh tay phải,MATLAB cho phép
thực hiện các phép toán chuyển đổi thông số,mô phỏng mô hình thông qua việc vẽ đồ thị từ các
chuỗi bits,...vv.Thông qua việc thực hiện điều chế các con số và hiện thực hóa thành các đồ
thị,MATLAb mang đến cho người dùng một cái nhìn khách quan về các con số,xử lí số liệu
chính xác hơn.
-Bằng việc vẽ đồ thị từ các bits MATLAB mô phỏng hình ảnh các dạng hình ảnh khác nhau với
biên độ và tần số khác nhau,mỗi cách điều chế sẽ cho một đồ thị khác nhau.MATLAB giải mã
các chuỗi bits thành các tín hiệu khác nhau giúp con người phân biệt các sự vật hiện tượng,âm
thanh trong cuộc sống...vv.Tính toán xử lí các thông số.

3.Một vài điều chế


-Điều chế số
Trong điều chế số, một sóng mang tương tự sẽ được biến đổi theo một chuỗi bit có chiều dài cố
định hoặc thay đổi. Đây cũng có thể được coi là một dạng biến đổi tương tự-số. Hình dạng của
sóng mang được lấy từ một tập hợp hữu hạn các symbol.
-Điều chế tương tự
Trong điều chế tương tự, việc điều chế được thực hiện liên tục theo tín hiệu thông tin tương tự.
-Một số cách điều chế:
1.ASK (Amplitude Shift Keying) tiếng việt gọi là điều chế số theo biên độ tín hiệu.Tín hiệu ask
có dạng song dao động có tần số f,mỗi bits đặc trưng bởi biên độ khác nhau của tín hiệu.
2.FSK (Frequency Shift Keying) tiếng việt gọi là điêu chế theo tần số tín hiệu.Tín hiệu FSK có
dạng sóng dao động có tần số khác nhau,mỗi bits đặc trưng bởi tần số khác nhau của tín hiệu.Ưu
điểm của điều chế này là dễ chế tạo nhưng lại hay mắc lỗi khi truyền.
3.PSK (Phase Shift Keying) tiếng việt gọi là điều chế theo pha tin hiệu.Tín hiệu PSK có dạng
song dao động có tần số f,mỗi bits đặc trưng bởi góc pha khác nhau của tín hiệu.
4.AM (Amplitude Modulation) tiếng việt gọi là điều chế theo biên độ dung để truyền thông tin
qua một song mang vô tuyến.Kỹ thuật này thay đổi biên độ của tín hiệu song mang theo biên độ
của thông tin cần chuyển đi,hay nói cách khác là điều chế sóng mang bằng biên độ theo tín hiệu
mang tin.
4.Một số hình ảnh
ỨNG DỤNG CỦA MATLAB VỚI LINE CODING
Code: function [x T] = LineEncoder(type,inbits,Tb,A)
% This function implements various Line Coding technique such as
Unipolar
% RZ, Unipolar NRZ, Polar RZ, Ppolar NRZ, Manchester, and Bipolar NRZ.
%
% INPUT:
% type = string accepting the type of coding as
% 'uninrz'
% 'unirz'
% 'polnrz'
% 'plorz'
% 'manchester'
% 'ami'
% inbits = input bits row vector
% Tb = Bit time period
% A = Amplitude of the coding
% Ts = Sampling time
% OUTPUT:
% x = Output line coding row vector
% T = time vector
%
%
%---Implemented by ASHISH MESHRAM
%---meetashish85@gmail.com http://www.facebook.com/ashishmeet
%---Checking input arguments
if nargin<4, A = 1;end
if nargin<3, Tb = 1e-9;end
if nargin<2, inbits = [1 0 1 0];end
if nargin<1, type = 'uninrz';end
%---Implementation starts here
Rb = 1/Tb; %---Bit rate
Fs = 4*Rb;
N = length(inbits); %---Bit Length of input bits
tTb = linspace(0,Tb); %---interval of bit time period
x = [];
switch lower(type)
case 'uninrz'
for k = 1:N
x = [x A*inbits(k)*ones(1,length(tTb))];
end
case 'unirz'
for k = 1:N
x = [x
A*inbits(k)*ones(1,length(tTb)/2)0*inbits(k)*ones(1,length(tTb)/2)];
end
case 'polrz'
for k = 1:N
c = ones(1,length(tTb)/2);
b = zeros(1,length(tTb)/2);
p = [c b];
x = [x ((-1)^(inbits(k)+1))*(A/2)*p];
end
case 'polnrz'
for k = 1:N
x = [x ((-1)^(inbits(k) + 1))*A/2*ones(1,length(tTb))];
end
case 'manchester'
for k = 1:N
c = ones(1,length(tTb)/2);
b = -1*ones(1,length(tTb)/2);
p = [c b];
x = [x ((-1)^(inbits(k)+1))*A/2*p];
end
case 'ami'
end
T = linspace(0,N*Tb,length(x)); %---Time vector for n bits

Matlab với ASK


clc
clear all
close all
a=[1 0 1 0 1 0 1];
la=length(a);
f=1;
for i=1:la
t=(i-1)*100+1:i*100;
x(t)=a(1,i).*sin(2*pi*f*t/100);
end
plot(x)

Matlab với FSK


clc
close all
clear all
b=input('Enter 10 bits Sequence ');
n = length(b);
f1=1;f2=2;
t=0:1/30:1-1/30;
%FSK
s0=sin(2*pi*f1*t);
s1=sin(2*pi*f2*t);
%MODULATION
fsk=[];
for i=1:n
if b(i)==1
fsk=[fsk s1];
else
fsk=[fsk s0];
end
end
figure(1)
subplot(2,1,1)
stairs(0:n,[b(1:n) b(n)],'linewidth',1.5)
axis([0 n -0.5 1.5])
title('Message Bits');grid on
xlabel('Time');ylabel('Amplitude')
subplot(2,1,2)
tb=0:1/30:n-1/30;
plot(tb, fsk,'r','linewidth',1.5)
axis([0 n -1.5 1.5])
title('FSK Modulation');grid on
xlabel('Time');ylabel('Amplitude')

PSK
clc;
clear all;
close all;
n=8;
x=randi([0,1],1,n); %random bit
generator
bp=.000001; % bit
period
disp(' Binary information at Trans mitter :');
disp(x);
% representation of transmitting binary information as digital signal
bit=[];
for n=1:1:length(x)
if x(n)==1;
se=ones(1,100);
else
se=zeros(1,100);
end
bit=[bit se];
end
t1=bp/100:bp/100:100*length(x)*(bp/100);
subplot(4,1,1);
plot(t1,bit,'lineWidth',2.5);grid on;
axis([ 0 bp*length(x) -.5 1.5]);
ylabel('amplitude(volts)');
xlabel(' time(sec)');
title('Binary data in the form of a digital signal');
%XXXXXXXXXXXXXXXXXXXXXXX Binary-PSK modulation
XXXXXXXXXXXXXXXXXXXXXXXXXXX
A=5; % Amplitude of carrier
signal
br=1/bp; % bit
rate
f=br*2; % carrier
frequency
t2=bp/99:bp/99:bp;
ss=length(t2);
m=[];
kl=[];
for i=1:1:length(x)
wave=A*sin(2*pi*f*t2);
kl=[kl wave];
end
for i=1:1:length(x)
if (x(i)==1)
y=A*sin(2*pi*f*t2);
else
y=A*sin(2*pi*f*t2+pi); %-A*sin(2*pi*f*t)
end
m=[m y];
end
t3=bp/99:bp/99:bp*length(x);
subplot(4,1,2);
plot(t3,kl);grid on;
xlabel('time(sec)');
ylabel('amplitude(volt)');
title('Carrier Signal');
subplot(4,1,3);
plot(t3,m);grid on;
xlabel('time(sec)');
ylabel('amplitude(volt)');
title('PSK modulated wave coresponding to binary information at the
transmitter');
%XXXXXXXXXXXXXXXXXXXX Binary PSK demodulation
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
mn=[];
for n=ss:ss:length(m)
t=bp/99:bp/99:bp;
y=sin(2*pi*f*t); % carrier
siignal
mm=y.*m((n-(ss-1)):n);
t4=bp/99:bp/99:bp;
z=trapz(t4,mm); %
intregation
zz=round((2*z/bp));
if(zz>0) % logic level =
(A+A)/2=0
%becouse A*sin(2*pi*f*t+pi) means -
A*sin(2*pi*f*t)
a=1;
else
a=0;
end
mn=[mn a];
end
disp(' Binary data at Reciver :');
disp(mn);
%Representation of binary information as digital signal which is
acheived
%after PSK demodulation
bit=[];
for n=1:length(mn)
if mn(n)==1;
se=ones(1,100);
else
se=zeros(1,100);
end
bit=[bit se];
end
t4=bp/100:bp/100:100*length(mn)*(bp/100);
subplot(4,1,4);
plot(t4,bit,'LineWidth',2.5);grid on;
axis([ 0 bp*length(mn) -.5 1.5]);
ylabel('amplitude(volt)');
xlabel(' time(sec)');
title('PSK demodulated wave corresponding to binary information at the
receiver ');
QAM
% n_bits: Input, number of bits
% M: Input, constellation size
% EbNodB: Input, energy per bit to noise power spectral density
% ber: Output, bit error rate
% Copyright RAYmaps (www.raymaps.com)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function[ber]= QAM_fading(n_bits, M, EbNodB)
% Transmitter
k=log2(M);
EbNo=10^(EbNodB/10);
x=transpose(round(rand(1,n_bits)));
h1=modem.qammod(M);
h1.inputtype='bit';
h1.symbolorder='gray';
y=modulate(h1,x);
% Channel
Eb=mean((abs(y)).^2)/k;
sigma=sqrt(Eb/(2*EbNo));
w=sigma*(randn(n_bits/k,1)+1i*randn(n_bits/k,1));
h=(1/sqrt(2))*(randn(n_bits/k,1)+1i*randn(n_bits/k,1));
r=h.*y+w;
% Receiver
r=r./h;
h2=modem.qamdemod(M);
h2.outputtype='bit';
h2.symbolorder='gray';
h2.decisiontype='hard decision';
z=demodulate(h2,r);
ber=(n_bits-sum(x==z))/n_bits
return
AM
clc;
close all;
clear all;
%XXXXXXXXXXXXXXXXXXXXXXXXXXX Define AM modulation Index
XXXXXXXXXXXXXXXXXXX
disp(' example: m=1 means 100% modulation');
%m=input(' Enter the value of modulation index (m) = ');
m=1; % for 100% modulation
if (0>m||m>1)
error('m may be less than or equal to one and geter than to zero');
end
%XXXXXXXXXXXXXXXXX modulating signal generation
XXXXXXXXXXXXXXXXXXXXXXXXXX
Am=5; % Amplitude of modulating signal
fa=2000; % Frequency of modulating signal
Ta=1/fa; % Time period of modulating signal
t=0:Ta/999:6*Ta; % Total time for simulation
ym=Am*sin(2*pi*fa*t); % Eqation of modulating signal
figure(1)
subplot(3,1,1);
plot(t,ym), grid on;% Graphical representation of Modulating signal
title ( ' Modulating Signal ');
xlabel ( ' time(sec) ');
ylabel (' Amplitud(volt) ');
%XXXXXXXXXXXXXXXXXXXXX carrier signal generation
XXXXXXXXXXXXXXXXXXXXXXXXXX
Ac=Am/m;% Amplitude of carrier signal [ where, modulation Index
(m)=Am/Ac ]
fc=fa*10;% Frequency of carrier signal
Tc=1/fc;% Time period of carrier signal
yc=Ac*sin(2*pi*fc*t);% Eqation of carrier signal
subplot(3,1,2);
plot(t,yc), grid on;% Graphical representation of carrier signal
title ( ' Carrier Signal ');
xlabel ( ' time(sec) ');
ylabel (' Amplitud(volt) ');
%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX AM Modulation
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
y=Ac*(1+m*sin(2*pi*fa*t)).*sin(2*pi*fc*t); % Equation of Amplitude
%modulated signal
subplot(3,1,3);
plot(t,y);% Graphical representation of AM signal
title ( ' Amplitude Modulated signal ');
xlabel ( ' time(sec) ');
ylabel (' Amplitud(volt) ');
grid on

FM
clc
clear all
close all
t = 0:255;
t = t/256;
f = 2;
fc = 20;
beta = 5;
m = sin(2*pi*f*t);
xc = cos(2*pi*fc*t + beta*m);
figure(6)
plot (t,xc)
figure(4)
.
t = 0:255;
t = t/256;
f = 2;
fc = 20;
beta = 2;
m = sin(2*pi*f*t);
xc = cos(2*pi*fc*t + beta*m);

fo = zeros(1,256);
ff = zeros(1,256);
ff = fc + 4*cos(2*pi*f*t);
x = zeros(1,256);
disc = zeros(1,256);
fo(1) = 20;

for i=1:256
disc(i) = 2*pi*fc*t(i) + beta*m(i) - 2*pi*fo(i)*t(i);
if (i ~= 1)
x(i) = (disc(i) - disc(i-1))*256/(2*pi);
else
x(i) = disc(i)*256/(2*pi);
end;
if (i ~= 256)
fo(i+1) = fc + 0.001*x(i);
end;
end;

subplot(2,1,1)
plot(t,disc);
ylabel('Discriminator');
title('Output of Discrminator');
subplot(2,1,2)
plot(t,x);
ylabel('x');
title('Adjustment to VCO');

PM

You might also like