Скачиваний:
59
Добавлен:
01.05.2014
Размер:
492.03 Кб
Скачать

Анализ сигнала с наложенным на него шумом

Итак, мы создали сигнал (возьмем сначала для дальнейшего исследования Второй сигнал) и наложили его на шум (Рис. 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');

Соседние файлы в папке Лабораторная работа 1
  • #
    01.05.2014492.03 Кб59MOTS_Lab#1.doc
  • #
    01.05.20147.95 Кб37Чистовой вариант кода.m