- •Часть 1. Синтез и фильтрация м-последовательностей
- •Построить взаимнокорреляционную функцию – вкф, т.Е. М2 – сигнал, а м1 – опорная функция. Изобразить полученную автокорреляционную функцию на общем поле графиков.
- •Из Mсум отфильтровать м1, т.Е. Mсум – сигнал, а м1 – опорная функция. Изобразить полученный результат на общем поле графиков.
- •Из Mсум отфильтровать м2, т.Е. Mсум – сигнал, а м2 – опорная функция. Изобразить полученный результат на общем поле графиков.
- •Из m3 отфильтровать м1, т.Е. M3 – сигнал, а м1 – опорная функция. Изобразить полученный результат на общем поле графиков.
- •Часть 2. Синтез и фильтрация кодов Уолша-Адамара
- •Синтезировать коды w1 и w2 с помощью функции Wfun. Значения data и r взять из таблицы 2 в соответствии с номером по списку.
- •Вычислить быстрое преобразование Уолша-Адамара для суммы кодов Wсум. Доказать, что полученный результат соответствует исходным закодированным числам.
- •Вычислить быстрое преобразование Уолша-Адамара для суммы кодов Wшум. Изобразить на графике полученный результат. Доказать, что полученный результат соответствует исходным закодированным числам.
ОТЧЁТ К ЛАБОРАТОРНОЙ РАБОТЕ №1
по дисциплине «Цифровая обработка сигналов»
Синтез и фильтрация ШПС-сигналов типа М-последовательностей, кодов Уолша-Адамара
Вариант №4
2020 год
Часть 1. Синтез и фильтрация м-последовательностей
Дано:
А = 1000000100
С1 = 0010000001
С2 = 0010001011
Запрограммировать в 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 и М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 в одном окне
Сформировать сумму М-последовательностей 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. График суммарной М-последовательности
Запрограммировать в 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 – опорная функция, с помощью функции 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