Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в теорию информации.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

Приложения Приложение 1. MatLab – программы для расчета цепи Маркова

Решение задачи 7.1

a=[0.488 -0.064 -0.008 -0.001;-0.384 0.392 -0.146 -0.027;-0.096 -0.292 0.316 -0.243; 1 1 1 1];

b=[0;0;0;1];

x1=a/b

x1=0.0370

0.2222

0.4444

0.2963

x2=a^(-1)*b

x2=0.0370

0.2222

0.4444

0.2963

x3=inv(a)*b

x3=0.0370

0.2222

0.4444

0.2963

Решение задачи 7.2

a=[0.5 -0.6 -0.1 0;-0.2 0.6 -0.2 0;0 0 0.3 -0.4;1 1 1 1];

b=[0;0;0;1];

x1=a/b

x1=0.2927

0.1951

0.2927

0.2195

x2=a^(-1)*b

x2=0.2927

0.1951

0.2927

0.2195

x3=inv(a)*b

x3=0.2927

0.1951

0.2927

0.2195

Приложение 2. MatLab – программа для определения энтропии дискретного источника

n=1618

x=[118 35 85 30 60 145 16 30 81 26 29 85 78 120 167 25 54 69 94 46 13 3 21 20 3 49 49 3 16 48]

x=Columns 1 through 28

118 35 85 30 60 145 16 30 81 26 29 85 78 120 167 25 54 69 94 46 13 3 21 20 3 49 49

Columns 1 through 28

16 48

p=x/n

p=Columns 1 through 16

0.0729 0.0216 0.0.0525 0.0185 0.0371 0.0896 0.0099 0.0185 0.0501 0.0161 0.0179 0.0525 0.0482 0.0742 0.1032 0.0155

Columns 17 through 30

0.0334 0.0426 0.0581 0.0284 0.0080 0.0019 0.0130 0.0124 0.0019 0.0303 0.0303 0.0019 0.0099 0.0297

h=abs(trace(log2(p)*p'))

h=4.4759

Приложение 3. MatLab – программа для оценки информационных характеристик дискретных источников с памятью

N_AA=input('Введите N(A|A)')

N_AC=input('Введите N(A|C)')

N_AD=input('Введите N(A|D)')

N_CA=input('Введите N(C|A)')

N_CC=input('Введите N(C|C)')

N_CD=input('Введите N(C|D)')

N_DA=input('Введите N(D|A)')

N_DC=input('Введите N(D|C)')

N_DD=input('Введите N(D|D)')

N_A1=N_AA+N_AC+N_AD

N_C1=N_CA+N_CC+N_CD

N_D1=N_DA+N_DC+N_DD

N=N_A1+N_C1+N_D1

P_A=N_A1/N

P_C=N_C1/N

P_D=N_D1/N

V=[P_A P_C P_D]

P_AA=N_AA/N_A1

P_CA=N_CA/N_A1

P_DA=N_DA/N_A1

P_AC=N_AC/N_C1

P_CC=N_CC/N_C1

P_DC=N_DC/N_C1

P_AD=N_AD/N_D1

P_CD=N_CD/N_D1

P_DD=N_DD/N_D1

M=[P_AA P_CA P_DA;P_AC P_CC P_DC;P_AD P_CD P_DD]

H_XA=-P_AA*log2(P_AA)-P_CA*log2(P_CA)-P_DA*log2(P_DA)

H_XC=-P_AC*log2(P_AC)-P_CC*log2(P_CC)-P_DC*log2(P_DC)

H_XD=-P_AD*log2(P_AD)-P_CD*log2(P_CD)-P_DD*log2(P_DD)

H_X=P_A*H_XA+P_C*H_XC+P_D*H_XD

ty=0.22

H1=H_X/ty

Rii=1-H_X/log2(3)

Приложение 4. Алгоритмы кодирования и декодирования

информации дискретного источника

Алгоритм построения кодового дерева кода Хаффмена

Input: Объем алфавита М, вероятности букв

Output: Двоичное дерево кода Хаффмена

Инициализация:

Количество необработанных узлов

while do

в списке необработанных узлов найти два узла с наименьшими вероятностями. Исключить эти узлы из списка необработанных.

Ввести новый узел, приписать ему суммарную вероятность двух исключенных узлов.

Новый узел связать ребрами с исключенными узлами.

end

Алгоритм построения кода Шеннона–Фано

Input: Объем алфавита , вероятности букв

Output: Список кодовых слов Шеннона

Сортировка:

for to do

индекс -й по убыванию вероятностей буквы алфавита

end

Кумулятивные вероятности:

for to do

end

Кодовые слова:

for to do

первые разрядов после запятой в двоичной записи числа

end

Алгоритм построения кода Гилберта–Мура

Input: Объем алфавита , вероятности букв

Output: Список кодовых слов кода Гилберта – Мура

Вспомогательные вероятности:

for to do

end

Кодовые слова:

for to do

первые разрядов после запятой в двоичной записи числа

end

Алгоритм арифметического кодирования

Input: Объем алфавита

вероятности букв

длина последовательности

последовательность на выходе источника ,

Output: Кодовое слова арифметического кода

Кумулятивные вероятности:

for to do

end

Кодирование:

for to do

end

Формирование кодового слова:

первые разрядов после запятой в двоичной записи числа

Алгоритм декодирования кода Гилберта – Мура

Input: Объем алфавита

кумулятивные вероятности букв

вход декодера

Output: Декодированная буква

Инициализация:

Поиск буквы:

while do

end

Результат:

Алгоритм декодирования арифметического кода

Input: Объем алфавита

вероятности букв

кумулятивные вероятности букв

длина декодируемой последовательности

кодовое слово в виде числа

Output: Декодированная последовательность букв

Инициализация:

Декодирование:

for to do

while do

end

end

Результат: последовательность

Приложение 5. MatLab – программы неравномерного арифметического кодирования и декодирования информации дискретного источника

MatLab – программа арифметического кодирования

Function y=int_arithm_encoder(x,q);

% x is input data sequence,

% q is cumulative distribution (model)

% y is binary output sequence

% Constants

K=16;

R4=2^(k-2); R2=R4*2; R34=R2+R4; % half,quarter,etc.

R=2*R2; % Precision

% Initialization

Low=0; % Low

High=R-1; % High

btf=0; % Bits to Follow

y=[ ]; % code sequence

% Encoding

for i=1:length(x);

Rage=High-Low+1;

High=Low+fix(Range*q(x(i)+1)/q(m))-1;

Low=Low+fix(Range*q(x(i)/q(m));

% Normalization

while 1

if High<R2

y=[y 0 ones(1,btf)]; btf=0;

High=High*2+1; Low=Low*2;

else

if Low>=R2

y=[y 1 zeros(1,btf)]; btf=0;

High=Higt*2-R+1; Low=Low*2-R;

else

if Low>=R4 & High<R34

High=2*High-R2+1; Low=2*Low-R2;

else

break;

end;

end;

end;

end; % while

end; % for

% Completing

If Low<R4

y=[y 0 ones(1,btf+1)];

else

y=[y 1 xeros(1,btf+1)];

end;