Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

cos-lab3-vorontsov / ЦОС лаба 3 Воронцов

.odt
Скачиваний:
26
Добавлен:
11.05.2015
Размер:
70.69 Кб
Скачать

Белорусский Государственный Университет

Информатики и Радиоэлектроники

Кафедра РТС

Отчет по лабораторной работе №3

«Преобразование Уолша-Адамара»

Выполнил

ст. гр. 942802

Воронцов М.А.

Проверил

Ходыко Д.Л.

Минск 2012

Цель работы

      1. Изучить свойства преобразования Уолша-Адамара.

      2. Получить навыки моделирования преобразования Уолша-Адамара в

среде Matlab.

Выполнение

1. Построил матрицу Адамара 8-го порядка.

Код:

H2=[1 1; 1 -1];

H4=[H2 H2; H2 -H2];

H8=[H4 H4; H4 -H4];

Результат:

1 1 1 1 1 1 1 1

1 -1 1 -1 1 -1 1 -1

1 1 -1 -1 1 1 -1 -1

1 -1 -1 1 1 -1 -1 1

1 1 1 1 -1 -1 -1 -1

1 -1 1 -1 -1 1 -1 1

1 1 -1 -1 -1 -1 1 1

1 -1 -1 1 -1 1 1 -1

2. Проверил свойства ортогональности и мультипликативности строк матрицы Адамара.

а) Ортогональность

Код:

k=2;

l=2;

sum( H8(k,:).*H8(l,:) ) % при k = l

k=2;

l=3;

sum( H8(k,:).*H8(l,:) ) % при k != l

Результат:

ans = 8

ans = 0

б) Мультипликативность

Код:

k=2;

l=3;

H8(k+1,:).*H8(l+1,:) % умноженные строки

bitxor(k,l); % суммируем по модулю 2

H8(ans+1,:) % строка с номером суммы по модулю 2

Результат:

ans =

1 -1 1 -1 1 -1 1 -1

ans =

1 -1 1 -1 1 -1 1 -1

3. Вычислил прямое и обратное преобразования Уолша-Адамара случайного дей­ствительного сигнала. Построил графики сигнала и спектра. Определил вычислитель­ные затраты. Сделал выводы.

Код:

s=rand(1,8) % формируем действительный сигнал

B=s*H8 % преобразование Уолша-Адамара

s_inv=(1/8)*B*H8 % обратное преобразование Уолша-Адамара

subplot(2,1,1) % график сигнала

plot( s )

subplot(2,1,2) % график спектра

plot( abs(B) )

Результат:

s = 0.68485 0.20709 0.83728 0.89675 0.26263 0.39086 0.75622 0.91425

B = 4.94994 0.13204 -1.85906 0.56703 0.30201 0.70454 0.17490 0.50742

s_inv = 0.68485 0.20709 0.83728 0.89675 0.26263 0.39086 0.75622 0.91425

сигнал

спектр

Выводы: вычислительные затраты составляют: N2 произведений и N2-N сумм. (В дан­ном случае N=8).

4. Проверил свойство линейности и инвариантности к диадному сдвигу преоб­разования Уолша-Адамара. Сделал выводы.

Код:

N=8;

H = hadamard(N);

s=rand(1,N) % сигнал

tau=4;

for c = 0:(length(s)-1) % выполняем диадный сдвиг

s_diad(c+1) = s(bitxor(c,tau)+1);

end

% выводим значения

s_diad

B = s*H

B_diad = s_diad*H

% рисуем графики

subplot(2,1,1)

plot( abs(B) )

subplot(2,1,2)

plot( abs(B_diad) )

Результат:

s = 0.323688 0.056303 0.588267 0.661792 0.301716 0.559631 0.613680 0.932707

s_diad = 0.301716 0.559631 0.613680 0.932707 0.323688 0.056303 0.588267 0.661792

B = 4.03778 -0.38308 -1.55511 0.40202 -0.77768 0.77080 -0.18503 0.27980

B_diad = 4.03778 -0.38308 -1.55511 0.40202 0.77768 -0.77080 0.18503 -0.27980

спектр исходного сигнала

спектр сигнала, подвергнутого диадному сдвигу

Выводы: Преобразование Уолша-Адамара инвариантно к диадному сдвигу.

5. Вычислил корреляционную функцию дискретного случайного действительно­го сигнала с помощью матричного преобразования Уолша- Адамара. Построил график корреляционной функции.

Код:

N = 8;

H = hadamard(N);

s = rand(1,N) % сигнал

B = s*H % ПУА

R = (1/N) * (B.*B) * H % корреляционная функция

subplot(2,1,1) % рисуем графики

plot(s)

subplot(2,1,2)

plot(R)

Результат:

s = 0.51428 0.52470 0.68830 0.73858 0.88928 0.57721 0.40518 0.25943

B = 4.59696 0.39714 0.41399 0.20618 0.33477 -0.51852 -1.18979 -0.12647

R = 2.9145 2.7933 2.5032 2.4111 2.4614 2.4825 2.7658 2.8002

сигнал

корреляционная функция

6. Вычислил корреляционную функцию с помощью графа быстрого преобразо­вания Уолша-Адамара. Графы построил в Simulink. Определил вычислительные затра­ты. Сделал выводы.

а) Предварительная проверка на языке Matlab

Код:

H = hadamard(8);

s = floor(rand(1,N)*10)

B = s*H

R = (1/N) * (B.*B) * H

Результат:

s = 7 8 3 4 3 8 1 7

B = 41 -13 11 1 3 9 5 -1

R = 261 198 224 162 232 210 208 186

б) Построения в Simulink

Граф быстрого преобразования Уолша-Адамара в Simulink

Корреляционная функция, вычисленная с помощью графа быстрого преобразования Уолша-Адамара.

Выводы: быстрое преобразование Уолша-Адамара потребовало N log2N операций, та­ким образом оно на (N2-N)-(N log2N) = N(N-log2N-1) операций выгоднее, чем обычное преоб­разование Уолша-Адамара.

Предварительное задание

1. Вычислил корреляционную функцию сигнала, используя диадный сдвиг.

Код:

N = 8;

H = hadamard(N);

s=rand(1,N)

B=s*H;

tau=4; % диадный сдвиг

for c = 0:(length(s)-1)

s_diad(c+1) = s(bitxor(c,tau)+1);

end

B_diad = s_diad*H;

R = (1/N) * (abs(B).*abs(B_diad)) * H

Результат:

s = 0.2611899 0.1092484 0.1562387 0.3692023 0.8770364 0.5803670 0.7307694 0.0019343

R = 1.88092 1.19327 1.44635 1.07862 0.81473 1.03501 1.08476 0.98964

2. Вычислил корреляционную функцию того же сигнала, используя преобразова­ние Уолша-Адамара.

Код:

R = (1/N) * (B.*B) * H

Результат:

R = 1.88092 1.19327 1.44635 1.07862 0.81473 1.03501 1.08476 0.98964

Выводы: В этой лабораторной работе мы изучили свойства преобразования Уолша-Адамара. Получили навыки моделирования преобразования Уолша-Адамара в среде Matlab и среде Simulink. Научились выполнять диадный сдвиг и вычислять корреляционную функ­цию.

Соседние файлы в папке cos-lab3-vorontsov