Синтез и фильтрация ШПС-сигналов типа М-последовательностей,
кодов Уолша-Адамара
Ниже представлена схема формирования М-последовательности последовательности.
здесь
А это фаза «М-последовательности», а С
– это характеристический многочлен
последовательности. Если Характеристический
многочлен длины m то
«М-последовательности» будет длины
.
Реализовать в MATLAB функцию Mfun(A,C), реализующую цифровой автомат генерации М последовательности, где А это фаза, а С – это характеристический многочлен последовательности.
Полученную М-последовательность следует привести к виду [1; -1], проведя замену: 0 в исходной последовательности заменить на 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.
Сформировать сумму М-последовательностей Mсум= М1 + М2, М2 взять со сдвигом и с инверсией.
Сдвиг выбрать равным 100 плюс ваш номер по списку в группе умноженный на 10, но не более половины длины последовательностей М1 и М2.
Изобразить полученную Mсум на общем поле графиков.
Запрограммировать в MATLAB
функцию my_sf(A,B),
реализующую согласованный фильтр для
фильтрации М-последовательностей и
построения автокорреляционных и
взаимнокорреляционных функций, где А
– это сигнал, а В – опорная функция.
Построить автокорреляционную функцию – АКФ для М1, т.е. М1 – сигнал, и М1 –опорная функция, с помощью функции my_sf.
Пример использования:
АКФ = my_sf(M1,M1);
Для отображения результатов, полученных в пунктах 5-9, требуется создать новое поле графиков с помощью функций figure и subplot.
Изобразить полученную автокорреляционную функцию на общем поле графиков.
Построить взаимнокорреляционную функцию – ВКФ, т.е. М2 – сигнал, а
М1 – опорная функция.
Изобразить полученную автокорреляционную функцию на общем поле графиков.
Из Mсум отфильтровать М1, т.е. Mсум – сигнал, а М1 – опорная функция.
Изобразить полученный результат на общем поле графиков.
Из Mсум отфильтровать М2, т.е. Mсум – сигнал, а М2 – опорная функция.
Изобразить полученный результат на общем поле графиков.
Повторить пункты 5-8 с использованием встроенной в MATLAB функции xcorr(A, B), где А – это сигнал, а В – опорная функция. Добиться идентичного результата работы функции my_sf.
Результаты полученные с помощью функции xcorr изобразить на общем поле графиков.
Исследовать М-последовательности на шумоподавление (пункты 10-13). Сформировать в MATLAB шум с помощью функции rand. В качестве амплитуды шума взять свой номер по списку в группе. Длина сформированного шума должна соответствовать длине М-последовательности.
Пример использования:
Шум = Aшум - 2×Aшум×rand(1,N).
Сформировать последовательность М3, сложив полученный шум с М-последовательностью М1: М3 = M1 + Шум.
Для отображения результатов, полученных в пунктах 11-13, требуется создать новое поле графиков с помощью функций figure и subplot.
Изобразить полученный результат на общем поле графиков.
Из M3 отфильтровать М1, т.е. M3 – сигнал, а М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 |
Запрограммировать в MATLAB
функцию Wfun(data, r),
реализующую цифровой автомат генерации
кодов Уолша-Адамара, где data
– число для которого генерируется код
Уолша-Адамара, r – требуемая
разрядность для числа data.
Синтезировать коды W1 и W2 с помощью функции Wfun.
Значения data и r взять из таблицы 2 в соответствии с номером по списку.
Сформировать сумму кодов Wсум = W1 + W2.
Запрограммировать в MATLAB функцию Bpfun(w, r), реализующую быстрое преобразование Уолша-Адамара, где w – код Уолша-Адамара, r –разрядность числа, представленного кодом Уолша-Адамара.
Вычислить быстрое преобразование Уолша-Адамара для суммы кодов Wсум. Доказать, что полученный результат соответствует исходным закодированным числам.
Исследовать коды Уолша-Адамара на шумоподавление (пункты 6-8). Сформировать в MATLAB шум с помощью функции rand. В качестве амплитуды шума взять свой номер по списку в группе. Длина сформированного шума должна соответствовать кода Уолша-Адамара.
Сформировать Wшум = Wсум + Шум. Noise = Amp - 2*Amp*rand(1, length(W)); Где Amp – амплитуда шума.
Вычислить быстрое преобразование Уолша-Адамара для суммы кодов 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 |