Реферат Информационная система
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
- Последовательность нулей и единиц – 32 штуки кодируем методами:
2.1 AMI
2.2 Манчестерский
2.3 2B1Q
Написание файл-функции позволяющей построить данную последовательность.
s = [1 1 0 0 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1];
n = 0:32;
subplot(411)
stairs(n, [s 0]);
axis([0 32 -0.2 1.2]);
x1 = AmiCod(s);
subplot(412);
stairs(n, [x1 0]);
axis([0 32 -1.4 1.4]);
x2 = ManchesterCod(s);
subplot(413);
n = 0:0.5:33;
stairs(n, [x2 0]);
axis([0 33 -1.4 1.4]);
x3 = B2Q1Cod(s);
subplot(414);
n = 0:16;
stairs(n, [x3 0]);
axis([0 16 -2.5 2.5]);
Вспомогательные функции:
function x = ManchesterCod(v)
len = length(v);
x = zeros(1, 2*len+2);
k = 3;
if (v(1) == 0)
x(1) = 0;
x(2) = 1;
else
x(1) = 0;
x(2) = -1;
end
for i=2:len
if (v(i-1) == 1)
x(k) = 1;
if (v(i) ~= 1)
x(k+1) = 1;
else
x(k+1) = -1;
end
else
x(k) = -1;
if (v(i) ~= 0)
x(k+1) = -1;
else
x(k+1) = 1;
end
end
k = k + 2;
end
if (v(len) == 0)
x(2*len+1) = -1;
x(2*len+2) = 0;
else
x(2*len+1) = 1;
x(2*len+2) = 0;
end
function x = AmiCod(v)
len = length(v);
x = zeros(1, len);
odd = 0;
for i = 1:len
if (v(i) == 1)
if (odd == 0)
x(i) = 1;
odd = 1;
else
x(i) = -1;
odd = 0;
end
else
x(i) = 0;
end
end
function x = B2Q1Cod(v)
len = length(v);
x = zeros(1, len/2);
i = 3;
k = 1;
while i <= len + 2
if (v(i-2) == 0)
if (v(i-1) == 0)
x(k) = 2;
else
x(k) = 1;
end
else
if (v(i-1) == 0)
x(k) = -1;
else
x(k) = -2;
end
end
i = i + 2;
k = k + 1;
end
3.
Нахождение спектров каждой последовательности и восстановление с помощью
20,
40,
80 гармоник, погрешность восстановления:
2.1. Нахождение спектра.
Написание файл-функции позволяющей найти коэффициенты Фурье для данного сигнала. При написании алгоритма использовали то, что знаем коэффициенты Фурье для прямоугольного импульса, а также свойство временного сдвига.
function F = FourTrans(v)
T0 = length(v);
F = zeros(1, 100);
k = 0:99;
for i = 1:length(v)
F = F + v(i)/T0*sinc(k/T0).*exp(-j*k*2*pi/T0*(i-0.5));
end
Нахождение коэффициентов Фурье для данного сигнала:
figure(2);
n = -99:99;
T0 = 32;
F1 = FourTrans(s);
subplot(411);
Fs1 = FourShift(F1);
stem(n/T0, abs(Fs1));
axis([-2 2 0 0.6])
F2 = FourTrans(x1);
subplot(412);
Fs2 = FourShift(F2);
stem(n/T0, abs(Fs2));
axis([-2 2 0 0.6])
F3 = FourTrans(x2);
subplot(413);
Fs3 = FourShift(F3);
stem(n/T0, abs(Fs3));
axis([-2 2 0 0.6])
F4 = FourTrans(x3);
subplot(414);
Fs4 = FourShift(F4);
n = -198:2:198;
T0 = 32;
stem(n/T0, abs(Fs4));
axis([-4 4 0 0.8])
Построение амплитудного спектра:
2.2 Исходный сигнал.
Вызов функции для восстановления сигнала 20, 40, 80 гармониками:
n = 0:32;
subplot(411);
stairs(n, [s 0]);
axis([0 32 -0.2 1.2]);
n = 0:0.01:32;
y0 = CreateSignal(s, 100);
E0 = trapz(y0.^2);
y1 = vosst(F1, 20, n, 32);
dE1 = trapz((y0 - y1).^2)/E0*100
E1 = trapz(y1.^2);
subplot(412);
plot(n, y1);
axis([0 32 -0.2 1.2]);
y2 = vosst(F1, 40, n, 32);
dE2 = trapz((y0 - y2).^2)/E0*100
subplot(413);
plot(n, y2);
axis([0 32 -0.2 1.2]);
y3 = vosst(F1, 80, n, 32);
dE3 = trapz((y0 - y3).^2)/E0*100
subplot(414);
plot(n, y3);
axis([0 32 -0.2 1.2]);
Нахождение погрешности при восстановлении из спектра:
Энергия исходного сигнала:
Погрешность
dE1 = 6.3847 - погрешность от восстановления 20 гармониками, %.
dE2 = 3.1355 - погрешность от восстановления 40 гармониками, %.
dE3 = 1.5393 - погрешность от восстановления 80 гармониками, %.
2.3 AMI.
Вызов функции для восстановления сигнала 20, 40, 80 гармониками:
n = 0:32;
subplot(411);
stairs(n, [x1 0]);
axis([0 32 -1.4 1.4]);
n = 0:0.01:32;
y0 = CreateSignal(x1, 100);
E0 = trapz(y0.^2);
y1 = vosst(F2, 20, n, 32);
dE1 = trapz((y0 - y1).^2)/E0*100
subplot(412);
plot(n, y1);
axis([0 32 -1.4 1.4]);
y2 = vosst(F2, 40, n, 32);
dE2 = trapz((y0 - y2).^2)/E0*100
subplot(413);
plot(n, y2);
axis([0 32 -1.4 1.4]);
y3 = vosst(F2, 80, n, 32);
dE3 = trapz((y0 - y3).^2)/E0*100
subplot(414);
plot(n, y3);
axis([0 32 -1.4 1.4]);
dE1 = 19.8299 - погрешность от восстановления 20 гармониками, %.
dE2 = 15.3788 - погрешность от восстановления 40 гармониками, %.
dE3 = 6.7840 - погрешность от восстановления 80 гармониками, %.
2.4. Манчестерский.
Вызов функции для восстановления сигнала 20, 40, 80 гармониками:
subplot(411);
n = 0:0.5:33;
stairs(n, [x2 0]);
axis([0 33 -1.4 1.4]);
n = 0:0.01:33;
y0 = CreateSignal(x2, 50);
E0 = trapz(y0.^2);
y1 = vosst(F3, 20, n, 33);
dE1 = trapz((y0 - y1).^2)/E0*100
subplot(412);
plot(n, y1);
axis([0 33 -1.4 1.4]);
y2 = vosst(F3, 40, n, 33);
dE2 = trapz((y0 - y2).^2)/E0*100
subplot(413);
plot(n, y2);
axis([0 33 -1.4 1.4]);
y3 = vosst(F3, 80, n, 33);
dE3 = trapz((y0 - y3).^2)/E0*100
subplot(414);
plot(n, y3);
axis([0 33 -1.4 1.4]);
dE1 = 84.6814 - погрешность от восстановления 20 гармониками, %.
dE2 = 24.1085 - погрешность от восстановления 40 гармониками, %.
dE3 = 15.3489 - погрешность от восстановления 80 гармониками, %.
2.5. 2B1Q.
Вызов функции для восстановления сигнала 20, 40, 80 гармониками:
subplot(411);
n = 0:16;
stairs(n, [x3 0]);
axis([0 16 -2.5 2.5]);
n = 0:0.005:16;
y0 = CreateSignal(x3, 200);
E0 = trapz(y0.^2);
y1 = vosst(F4, 20, n, 16);
dE1 = trapz((y0 - y1).^2)/E0*100
subplot(412);
plot(n, y1);
axis([0 16 -2.5 2.5]);
y2 = vosst(F4, 40, n, 16);
dE2 = trapz((y0 - y2).^2)/E0*100
subplot(413);
plot(n, y2);
axis([0 16 -2.5 2.5]);
y3 = vosst(F4, 80, n, 16);
dE3 = trapz((y0 - y3).^2)/E0*100
subplot(414);
plot(n, y3);
axis([0 16 -2.5 2.5]);
dE1 = 13.3203 - погрешность от восстановления 20 гармониками, %.
dE2 = 5.8931 - погрешность от восстановления 40 гармониками, %.
dE3 = 2.8416 - погрешность от восстановления 80 гармониками, %.
3. Скремблирование сигнала.
% Bi = Ai * Bi-n * Bi-m
x = [0 1 1 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 1];
n=10;
m=31;
subplot(311)
stairs(x), grid
axis([1 64 -0.5 1.5]);
subplot(312)
% скрэмблирование
scr=zeros(1,64);
for i=1:64
if i<=n
scr(i)=x(i);
elseif (i>n)&(i<=m)
scr(i)=xor(x(i),scr(i-n));
elseif i>m
scr(i)=xor(xor(x(i),scr(i-n)),scr(i-m));
end
end
stairs(scr), grid
axis([1 64 -0.5 1.5]);
subplot(313)
% дескрэмблирование
x2=zeros(1,64);
for i=1:64
if i<=n
x2(i)=scr(i);
elseif (i>n)&(i<=m)
x2(i)=xor(scr(i),scr(i-n));
elseif i>m
x2(i)=xor(xor(scr(i),scr(i-n)),scr(i-m));
end
end
stairs(x2), grid
axis([1 64 -0.5 1.5]);
Скремблирование наряду с избыточным кодированием является способом логического кодирования информации. Скремблирование заключается в побитном вычислении результирующего кода на основании битов исходного кода и полученных в предыдущих тактах битов результирующего кода.
Используется для «борьбы» с большими последовательностями нулей и единиц (большие последовательности нулей и единиц пагубно влияют на синхронизацию), а так же для шифрования.
Различные алгоритмы скремблирования отличаются количеством слагаемых, дающих цифру результирующего кода, и сдвигом между слагаемыми. Так, в сетях ISDN при передаче данных от сети к абоненту используется преобразование со сдвигами в 5 и 23 позиции, а при передаче данных от абонента в сеть - со сдвигами 18 и 23 позиции.
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
Кафедра Систем Сбора и Обработки Данных
ЛАБОРАТОРНАЯ РАБОТА № 1
Выполнил: Педонова З. Н.
Группа: АО-51
Проверил: Моторин С. В.
Новосибирск 2008