Материал: ЦОС-№1 new

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

8

Лабораторная работа №1

Синтез и фильтрация ШПС-сигналов типа М-последовательностей,

кодов Уолша-Адамара

Синтез и фильтрация м-последовательностей

Ниже представлена схема формирования М-последовательности последовательности.

здесь А это фаза «М-последовательности», а С – это характеристический многочлен последовательности. Если Характеристический многочлен длины m то «М-последовательности» будет длины .

Выполнение работы

  1. Реализовать в MATLAB функцию Mfun(A,C), реализующую цифровой автомат генерации М последовательности, где А это фаза, а С – это характеристический многочлен последовательности.

Полученную М-последовательность следует привести к виду [1; -1], проведя замену: 0 в исходной последовательности заменить на 1, а 1 – на -1.

  1. Сформировать две последовательности М1 и М2 с помощью функции Mfun.

Пример использования, если фаза равна А, а характеристические многочлены C1 и C2, то:

M1 = Mfun(A,C1);

M2 = Mfun(A,C2);

Варианты A, C1, C2 выбрать в соответствии с номером по списку в группе из таблицы 1.

Изобразить полученные М-последовательности на отдельных графиках.

Для построения в MATLAB’е графиков следует использовать функции figure, plot, subplot.

Графики пунктов 2, 3 следует изобразить на общем поле с помощью функции subplot.

  1. Сформировать сумму М-последовательностей Mсум= М1 + М2, М2 взять со сдвигом и с инверсией.

Сдвиг выбрать равным 100 плюс ваш номер по списку в группе умноженный на 10, но не более половины длины последовательностей М1 и М2.

Изобразить полученную Mсум на общем поле графиков.

  1. Запрограммировать в MATLAB функцию my_sf(A,B), реализующую согласованный фильтр для фильтрации М-последовательностей и построения автокорреляционных и взаимнокорреляционных функций, где А – это сигнал, а В – опорная функция.

  2. Построить автокорреляционную функцию – АКФ для М1, т.е. М1 – сигнал, и М1 –опорная функция, с помощью функции my_sf.

Пример использования:

АКФ = my_sf(M1,M1);

Для отображения результатов, полученных в пунктах 5-9, требуется создать новое поле графиков с помощью функций figure и subplot.

Изобразить полученную автокорреляционную функцию на общем поле графиков.

  1. Построить взаимнокорреляционную функцию – ВКФ, т.е. М2 – сигнал, а

М1 – опорная функция.

Изобразить полученную автокорреляционную функцию на общем поле графиков.

  1. Из Mсум отфильтровать М1, т.е. Mсум – сигнал, а М1 – опорная функция.

Изобразить полученный результат на общем поле графиков.

  1. Из Mсум отфильтровать М2, т.е. Mсум – сигнал, а М2 – опорная функция.

Изобразить полученный результат на общем поле графиков.

  1. Повторить пункты 5-8 с использованием встроенной в MATLAB функции xcorr(A, B), где А – это сигнал, а В – опорная функция. Добиться идентичного результата работы функции my_sf.

Результаты полученные с помощью функции xcorr изобразить на общем поле графиков.

  1. Исследовать М-последовательности на шумоподавление (пункты 10-13). Сформировать в MATLAB шум с помощью функции rand. В качестве амплитуды шума взять свой номер по списку в группе. Длина сформированного шума должна соответствовать длине М-последовательности.

Пример использования:

Шум = Aшум - 2×Aшум×rand(1,N).

  1. Сформировать последовательность М3, сложив полученный шум с М-последовательностью М1: М3 = M1 + Шум.

Для отображения результатов, полученных в пунктах 11-13, требуется создать новое поле графиков с помощью функций figure и subplot.

Изобразить полученный результат на общем поле графиков.

  1. Из M3 отфильтровать М1, т.е. M3 – сигнал, а М1 – опорная функция.

Изобразить полученный результат на общем поле графиков.

  1. Изобразить результаты из пункта 12 на графике в децибелах на общем поле графиков, воспользовавшись формулой: dB=20×log10(|A/Amax|);

Таблица 1. Данные для формирования М-последовательностей.

Номер по списку

А

С1

С2

1

1000000001

0000001001

0000011011

2

1000000010

0000100111

0000101101

3

1000000011

0001100101

0001101111

4

1000000100

0010000001

0010001011

5

1000000101

0011000101

0011010111

6

1000000110

0011100111

0011110011

7

1000000111

0011111111

0100001101

8

1000001000

0100011001

0100100011

9

1000001001

0100110001

0100111101

10

1000001010

0101000011

0101010111

11

1000001011

0101101011

0110000101

12

1000001100

0110001111

0110010111

13

1000001101

0110100001

0111000111

14

1000001110

0111100101

0111110111

15

1000001111

0111111011

1000010011

16

1000010000

1000010101

1000100101

17

1000010001

1000110111

1001000011

18

1000010010

1001001111

1001011011

19

1000010011

1001111001

1001111111

20

1000010100

1010001001

1010110101

21

1000010101

1011000001

1011010011

22

1000010110

1011011111

1011111101

23

1000010111

1100010111

1100011101

24

1000011000

1100100001

1100111001

25

1000011001

1101000111

1101001101

26

1000011010

1101010101

1101010110

27

1000011011

1101100011

1101111101

28

1000011100

1110001101

1110010011

29

1000011101

1110110001

1111011011

30

1000011110

1111110011

1111111001

Пример вывода графиков при выполнении задания «Синтез и фильтрация м-последовательностей»:

Синтез и фильтрация кодов Уолша-Адамара Выполнение работы

  1. Запрограммировать в MATLAB функцию Wfun(data, r), реализующую цифровой автомат генерации кодов Уолша-Адамара, где data – число для которого генерируется код Уолша-Адамара, r – требуемая разрядность для числа data.

  2. Синтезировать коды W1 и W2 с помощью функции Wfun.

Значения data и r взять из таблицы 2 в соответствии с номером по списку.

  1. Сформировать сумму кодов Wсум = W1 + W2.

  2. Запрограммировать в MATLAB функцию Bpfun(w, r), реализующую быстрое преобразование Уолша-Адамара, где w – код Уолша-Адамара, r –разрядность числа, представленного кодом Уолша-Адамара.

  3. Вычислить быстрое преобразование Уолша-Адамара для суммы кодов Wсум. Доказать, что полученный результат соответствует исходным закодированным числам.

  4. Исследовать коды Уолша-Адамара на шумоподавление (пункты 6-8). Сформировать в MATLAB шум с помощью функции rand. В качестве амплитуды шума взять свой номер по списку в группе. Длина сформированного шума должна соответствовать кода Уолша-Адамара.

  5. Сформировать Wшум = Wсум + Шум. Noise = Amp - 2*Amp*rand(1, length(W)); Где Amp – амплитуда шума.

  6. Вычислить быстрое преобразование Уолша-Адамара для суммы кодов Wшум. Изобразить на графике полученный результат.

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

Таблица 2. Данные для формирования кодов Уолша-Адамара.

Номер по списку

data1

data2

r

1

1

434

10

2

2

149

10

3

3

121

10

4

4

354

10

5

5

254

10

6

6

356

10

7

7

228

10

8

8

674

10

9

9

359

10

10

10

458

10

11

11

596

10

12

12

239

10

13

13

489

10

14

14

378

10

15

15

586

10

16

16

536

10

17

17

385

10

18

18

378

10

19

19

536

10

20

20

397

10

21

21

369

10

22

22

252

10

23

23

137

10

24

24

35

10

25

25

378

10

26

26

453

10

27

27

377

10

28

28

357

10

29

29

373

10

30

30

222

10