- •Отчет по лабораторной работе № 1 «Корреляционный метод измерения высоты полета самолета»
- •2005 Цель работы
- •Теоретические сведения
- •Ход выполнения работы
- •Формирование сигналов для анализа
- •Анализ полученных сигналов с точки зрения пригодности для решения поставленной задачи
- •Анализ сигнала с наложенным на него шумом
- •Приложения Исходный код matlab
- •Графики всех сигналов
Анализ сигнала с наложенным на него шумом
Итак, мы создали сигнал (возьмем сначала для дальнейшего исследования Второй сигнал) и наложили его на шум (Рис. 11), тем самым смоделировали посылку сигнала на поверхность Земли.
Сигнал вернулся к нам и наша задача – выделить его из шума. Воспользуемся для этого корреляционным методом: возьмём копию чистого сигнала и будем умножать ее поэлементно на пришедший с поверхности Земли сигнал (сигнал с шумом). В момент совпадения чистого сигнала с сигналом, содержащимся в шуме, на графике ВКФ появится полезный пик (Рис. 15). Опять таки, в данном случае график ВКФ дает нам лучшие результаты, чем аналогичный график для ковариационной характеристики (Рис. 14).
Дополнительно проделаем аналогичные операции, но на этот раз - с Первым сигналом. Как видно из Рис. 12- Рис. 13соответственно ковариационные и корреляционные характеристики в этом случае будут заметно хуже, что еще раз подтверждает сделанные нами в предыдущем разделе выводы.
Приложения Исходный код matlab
% Для чистоты наших экспериментов обнулим рабочую область и окно кода.
clear all; clc;
%--------------------------------------------------------------------
% Сформируем Первый сигнал: он будет представлять из себя
% совокупность меандра и косинуса.
%--------------------------------------------------------------------
for i = 1:200,
if i < 50 First_Signal(i) = ( (cos(i/5) <= 0) - 0.1 );
else
if i > 100 First_Signal(i) = ( (cos(i/5) <= 0) - 0.1 );
else First_Signal(i) = cos(i/5);
end;
end;
end;
figure;
plot(First_Signal, 'k');
%--------------------------------------------------------------------
% Сформируем Второй сигнал: набор случайных значений.
%--------------------------------------------------------------------
for i = 1:200,
Second_Signal(i) = rand() < 0.5;
end;
figure;
plot(Second_Signal, 'k');
%--------------------------------------------------------------------
% Создадим шум, распределенный по нормальному закону.
%--------------------------------------------------------------------
Some_Vector = 1:1000;
Noise = (randn(size(Some_Vector)) - 0.5)./2;
clear Some_Vector;
figure;
plot(Noise, 'k');
%--------------------------------------------------------------------
% Проведем ковариацию Первого сигнала с самим собой.
%--------------------------------------------------------------------
Some_Vector = 1:600;
Some_Vector = zeros(1,600);
for i = 1:200
Some_Vector(200+i) = First_Signal(i);
end
for i = 1:400,
a = First_Signal.*Some_Vector(i:199+i);
b = ones(size(First_Signal));
First_Signal_Covariation(i) = a*b';
end;
clear a b Some_Vector;
figure;
plot(First_Signal_Covariation, 'k');
%--------------------------------------------------------------------
% Проведем корреляцию Первого сигнала.
%--------------------------------------------------------------------
Some_Vector = 1:600;
Some_Vector = zeros(1,600);
for i = 1:200
Some_Vector(200+i) = First_Signal(i);
end
for i = 1:400,
a = (First_Signal - mean(First_Signal)).*Some_Vector(i:199+i);
b = ones(size(First_Signal));
First_Signal_Correlation(i) = a*b';
end;
clear a b Some_Vector;
figure;
plot(First_Signal_Correlation, 'k');
%--------------------------------------------------------------------
% Проведем ковариацию Второго сигнала.
%--------------------------------------------------------------------
Some_Vector = zeros(1,600);
for i = 1:200
Some_Vector(200+i) = Second_Signal(i);
end
for i = 1:400,
a = Second_Signal.*Some_Vector(i:199+i);
b = ones(size(Second_Signal));
Second_Signal_Covariation(i) = a*b';
end;
clear a b Some_Vector;
figure;
plot(Second_Signal_Covariation, 'k');
%--------------------------------------------------------------------
% Проведем корреляцию Второго сигнала.
%--------------------------------------------------------------------
Some_Vector = zeros(1,600);
for i = 1:200
Some_Vector(200+i) = Second_Signal(i);
end
for i = 1:400,
a = (Second_Signal - mean(Second_Signal)).*Some_Vector(i:199+i);
b = ones(size(Second_Signal));
Second_Signal_Correlation(i) = a*b';
end;
clear a b Some_Vector;
figure;
plot(Second_Signal_Correlation, 'k');
%--------------------------------------------------------------------
% Проведем ковариацию чистого шума с самим собой.
%--------------------------------------------------------------------
Some_Vector = 1:3000;
Some_Vector = zeros(1,3000);
for i = 1:1000
Some_Vector(1000+i) = Noise(i);
end
for i = 1:2000,
a = Noise.*Some_Vector(i:999+i);
b = ones(size(Noise));
Noise_Covariation(i) = a*b';
end;
clear a b Some_Vector;
figure;
plot(Noise_Covariation, 'k');
%--------------------------------------------------------------------
% Проведем корреляцию чистого шума.
%--------------------------------------------------------------------
Some_Vector = 1:3000;
Some_Vector = zeros(1,3000);
for i = 1:1000
Some_Vector(1000+i) = Noise(i);
end
for i = 1:2000,
a = (Noise - mean(Noise)).*Some_Vector(i:999+i);
b = ones(size(Noise));
Noise_Correlation(i) = a*b';
end;
clear a b Some_Vector;
figure;
plot(Noise_Correlation, 'k');
%--------------------------------------------------------------------
% Сложение Первого сигнала с шумом.
%--------------------------------------------------------------------
First_Signal_Plus_Noise = Noise;
First_Signal_Plus_Noise(301:500) = First_Signal + Noise(301:500);
figure;
plot(First_Signal_Plus_Noise, 'k');
%--------------------------------------------------------------------
% Сложение Второго сигнала с шумом.
%--------------------------------------------------------------------
Second_Signal_Plus_Noise = Noise;
Second_Signal_Plus_Noise(301:500) = Second_Signal + Noise(301:500);
figure;
plot(Second_Signal_Plus_Noise, 'k');
%--------------------------------------------------------------------
% Произведем ковариацию шума с наложенным на него Первым сигналом.
%--------------------------------------------------------------------
for i = 1:800,
a = First_Signal.*First_Signal_Plus_Noise(i:199+i);
b = ones(size(First_Signal));
First_Signal_Plus_Noise_Covariation(i) = ( a*b' );
end;
clear a b;
figure;
plot(First_Signal_Plus_Noise_Covariation, 'k');
%--------------------------------------------------------------------
% Произведем корреляцию шума с наложенным на него Первым сигналом.
%--------------------------------------------------------------------
for i = 1:800,
a =(First_Signal-mean(First_Signal)).*First_Signal_Plus_Noise(i:199+i);
b = ones(size(First_Signal));
First_Signal_Plus_Noise_Correlation(i) = ( a*b' );
end;
clear a b;
figure;
plot(First_Signal_Plus_Noise_Correlation, 'k');
%--------------------------------------------------------------------
% Произведем ковариацию шума с наложенным на него Вторым сигналом.
%--------------------------------------------------------------------
for i = 1:800,
a = Second_Signal.*Second_Signal_Plus_Noise(i:199+i);
b = ones(size(Second_Signal));
Second_Signal_Plus_Noise_Covariation(i) = ( a*b' );
end;
clear a b;
figure;
plot(Second_Signal_Plus_Noise_Covariation, 'k');
%--------------------------------------------------------------------
% Произведем корреляцию шума с наложенным на него Вторым сигналом.
%--------------------------------------------------------------------
for i = 1:800,
a = (Second_Signal-mean(Second_Signal)).*Second_Signal_Plus_Noise(i:199+i);
b = ones(size(Second_Signal));
Second_Signal_Plus_Noise_Correlation(i) = ( a*b' );
end;
clear a b;
figure;
plot(Second_Signal_Plus_Noise_Correlation, 'k');