Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР 1 вариант 4 (ЦОС) отчёт - Синтез и фильтрация ШПС-сигналов типа М-последовательностей, кодов Уолша-Адамара.docx
Скачиваний:
61
Добавлен:
13.02.2021
Размер:
680.34 Кб
Скачать

ОТЧЁТ К ЛАБОРАТОРНОЙ РАБОТЕ №1

по дисциплине «Цифровая обработка сигналов»

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

Вариант №4

2020 год

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

Дано:

А = 1000000100

С1 = 0010000001

С2 = 0010001011

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

function f = MFun(A,C)

Mr = [];

i = 1;

Ai = A;

while(i<2.^length(C))

M = C.*Ai;

Mi = mod(sum(M),2);

Mr = [(Ai(length(Ai)-1)*(-2)+1) Mr];

Ai = [Mi Ai(1:(length(Ai)-1))];

i = i +1;

end

f = Mr;

end

  1. Сформировать две последовательности М1 и М2 с помощью функции Mfun. Изобразить полученные М-последовательности на отдельных графиках. Для построения в MATLAB’е графиков следует использовать функции figure, plot, subplot. Графики пунктов 2, 3 следует изобразить на общем поле с помощью функции subplot.

function f = Lab1_1()

close all; % закрытие ранее открытых окон

clear all; % очистка переменных и кэш-памяти

A = [1 0 0 0 0 0 0 1 0 0] % фаза

C1 =[0 0 1 0 0 0 0 0 0 1] % характеристический многочлен последовательности M1

C2 =[0 0 1 0 0 0 1 0 1 1] % характеристический многочлен последовательности M2

***

M1 = MFun(A,C1); % функция формирования последовательности М1

M2 = MFun(A,C2); % функция формирования последовательности М2

***

figure;

subplot(1,4,1); plot(M1);grid on; title ('Последовательность М1'); %построение графика последовательности M1

subplot(1,4,2); plot(M2); grid on; title ('Последовательность М2'); %построение графика последовательности М2

Рисунок 1. Вывод А, С1 и С2

Рисунок 2. Графики последовательностей М1 и М2 в одном окне

  1. Сформировать сумму М-последовательностей Mсум= М1 + М*2, где М*2 - это М2 взятая со сдвигом и с инверсией. Сдвиг выбрать равным 83 плюс ваш номер по списку в группе умноженный на 5, но не более половины длины последовательностей М1 и М2. Изобразить полученную Mсум на общем поле графиков.

function f = Lab1_1()

close all; % закрытие ранее открытых окон

clear all; % очистка переменных и кэш-памяти

A = [1 0 0 0 0 0 0 1 0 0] % фаза

C1 =[0 0 1 0 0 0 0 0 0 1] % характеристический многочлен последовательности M1

C2 =[0 0 1 0 0 0 1 0 1 1] % характеристический многочлен последовательности M2

Zl = (83+5*4); % Расчёт сдвига

M1 = MFun(A,C1); % функция формирования последовательности М1

M2 = MFun(A,C2); % функция формирования последовательности М2

Zr = zeros(1,Zl);

M1i = [M1,Zr]; % Последовательность М1 далее нули

M2i = [Zr,M2]; % Последовательность М2 со сдвигом

MN = M1i - M2i; % М-последовательность суммарная

***

figure;

subplot(1,4,1); plot(M1);grid on; title ('Последовательность М1'); %построение графика последовательности M1

subplot(1,4,2); plot(M2); grid on; title ('Последовательность М2'); %построение графика последовательности М2

subplot(1,4,3:4); plot(MN); grid on; title ('Суммарная М-последовательность');%построение графика М-суммарной

Рисунок 3. Графики в одном окне, в том числе Мсум

Рисунок 4. График суммарной М-последовательности

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

function f = my_sf(S,R)

i = 1;

Cr = [];

Sx = [zeros(1,length(R)-1) S zeros(1,length(R)-1)];

while(i < length(S)+length(R))

Sy = [Sx(i:i+length(R)-1)];

Q = Sy.*R;

Cr = [ sum(Q) Cr];

i= i+1;

end

f = Cr;

end

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

function f = Lab1_1()

close all; % закрытие ранее открытых окон

clear all; % очистка переменных и кэш-памяти

A = [1 0 0 0 0 0 0 1 0 0] % фаза

C1 =[0 0 1 0 0 0 0 0 0 1] % характеристический многочлен последовательности M1

C2 =[0 0 1 0 0 0 1 0 1 1] % характеристический многочлен последовательности M2

***

M1 = MFun(A,C1); % функция формирования последовательности М1

***

AKF1 = my_sf(M1,M1); % функция АКФ для последовательности М1 (М1 сигнал и опорная функция)

***

figure;

subplot(2,4,1); plot(AKF1); grid on; title ('АКФ для последовательности М1');%Построение АКФ - М1

Рисунок 5. АКФ для М1