Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НОВИКОВ_2013-14 / Лаб_№2.doc
Скачиваний:
30
Добавлен:
19.03.2015
Размер:
203.26 Кб
Скачать

2.2. Формирование случайных процессов

Сформировать случайный процесс с заданной корреляционной функцией можно, если:

- сначала сформировать случайный процесс, являющийся нормально распределенным белым шумом,

- а затем “пропустить его через некоторое динамическое звено (формирующий фильтр)”.

На выходе такого звена получается нормально распределенный случайный процесс с корреляционной функцией, вид которой определяется типом формирующего фильтра.

Белый гауссовый шум в MatLabобразуется при помощи процедурыrandn.

Для этого достаточно задать дискрет времени Ts, образовать с этим шагом массив (вектор)t моментов времени в нужном диапазоне, а затем сформировать по указанной процедуре вектор-столбец длиной, равной длине вектораt.

Например

>> Ts=0.01;

>> t=0:Ts:20;

>> x1=randn(1,length(t));

>> plot(t,x1),grid;

>> title('Gaus(T=0.01c)');

>> xlabel('t, c');

>> ylabel('X1(t)')

Соответствующий процесс имеет вид:

Для другого дискрета Ts=0.001с имеем

>> Ts=0.001;

>> t=0:Ts:20;

>> x2=randn(1,length(t));

>> plot(t,x2),grid;

>> title('Gaus Ts=0.001 c');

>> xlabel('t, c');

>> ylabel('X2(t)')

Создадим дискретный формирующий фильтр второго порядка с частотой собственных колебаний ω0= 2π рад\с =1 Гц и относительным коэффициентом колебаний затуханияξ=0.05 по выражениям (2) коэффициентов:

>> om0=2*pi;dz=0.05;A=1;oms=om0*Ts;

>> a(1)=1+2*dz*oms+oms^2;

>> a(2)=-2*(1+dz*oms;

>> a(3)=1;

>> b(1)=A*2*dz*oms^2;

Пропустим образованный процесс x1через созданный формирующий фильтр:

>> y1=filter(b,a,x1);

Построим соответствующий график:

Аналогичные операции произведем с процессом x2(t)

>> x2=randn(1,length(t));

>> Ts=0.001;

>> om0=2*pi;dz=0.05;A=1;oms=om0*Ts;

>> a(1)=1+2*dz*oms+oms^2;

>> a(2)=-2*(1+dz*oms);

>> a(3)=1;

>> b(1)=A*2*dz*oms^2;

>> y2=filter(b,a,x2);t=0:Ts:20;

>> plot(t,y2),grid;

>> title('procedure (T0=1;dz=0.05;Ts=0.001)');

>> xlabel('t, c');

>> ylabel('Y1(t)')

Как видим, на выходе формирующего фильтра действительно образуется случайный колебательный процесс с преобладающей частотой 1 Гц.

3. Спектральный и статистический анализ

3.1. Основные понятия

Основная задача спектрального анализа сигналов – выявление гармонического спектра этих сигналов, т.е. определение частот гармонических составляющих сигнала (выявление частотного спектра), амплитуд этих гармонических составляющих (амплитудного спектра) и их начальных фаз (фазового спектра).

В основе спектрального анализа лежит теория Фурье о возможности разложениялюбого периодического процесса на счетную сумму отдельных гармонических составляющих.

Процедуры fftи ifft осуществляют преобразования заданного вектора, соответствующиедискретному прямому (fftFast Fourier Transformation) и обратному (ifftInvers Fast Fourier Transformation) преобразованиям Фурье.

Обращение к этим функциям

y=fft(x,n); x=ifft(y,n)

приводит к формированию вектора y в первом случае, и вектораx- во втором, по формулам:

(4)

где n– число элементов заданного вектораx; jмнимая единица.

3.2. Примеры спектрального анализа

Входной сигнал представим в виде вектора, элементы которого равны значениям функции, являющейся суммой двух синусоид с частотами 5 и 12 Гц. Найти Фурье-изображение этого сигнала и вывести графики входного процесса и модуля его Фурье-изображения:

>> t=0:0.001:2;

>> x=sin(2*pi*5*t)+cos(2*pi*12*t);

>> plot(t,x),grid;

>> title('input');

>> xlabel('t, c');

>> ylabel('X(t)')

>> y=fft(x);

>> a=abs(y);

>> plot(a);grid;

>> title('fourier');

>> xlabel('number');

>> ylabel('absF(X(t))')

Теперь осуществим обратное преобразование с помощью функции ifft:

>> z=ifft(y);

>> plot(t,z), grid;

>> title('inverse');xlabel('number');

>> xlabel('t, c');

>> ylabel('Z(t))')

Как следует из последнего рисунка, воспроизведенный процесс в точности совпадает с исходным.

Из выражений (4) можно заметить:

- номер mсоответствует моменту времениtm , в который измерен входной сигналx(m);

- номер k – это индекс значения частотыfk, которому соответствует найденный элементy(k)дискретного преобразования Фурье;

- для перехода от индексов к временной и частотной областям, необходимо знать значение шага h дискрета времени, через который измерен входной сигналx(t), и промежутокTвремени, на протяжении которого он измерен; тогда дискрет по частоте в изображении Фурье определяется выражением

Df=1/T,

а диапазон изменения частоты – выражением

F=1/h.

Так в нашем примере Df=0.5, F= 1000.

- Фурье - изображение определяется функцией fftтолько для положительных частот в диапазоне от0доF, что неудобно для построения графиков Фурье – изображения от частоты; более удобным является переход к вектору Фурье – изображения, определенному в диапазоне частот[-F/2 - F/2].

Сформируем для данного примера массив частот и выведем график с аргументом частотой

>> f=0:0.5:1000;

>> plot(f,a)'grid;

>> plot(f,a);grid;

>> title('F(x)');xlabel('friquency, Hz');

>> ylabel('abs(F(X))')

На рисунке трудно различить частоты (5 и 12 Гц), с которыми колеблется входной сигнал.

Для установления истинного спектра входного сигнала необходимо вначале преобразовать полученный вектор y Фурье – изображения с помощью процедурыfftshift. Она предназначена для формирования нового вектораz из заданногоу путем перестановки второй половины векторау в первую половину вектораz

>> f1=-500:0.5:500;

>> v=fftshift(y);

>> a=abs(v);

>> plot(f1(970:1030),a(970:1030));grid;

>> title('F/N');

>> xlabel('friquency, Hz');

>> ylabel('abs(F(X))/N')

Из графика видно, что в спектре входного сигнала есть две гармоники- 5 и 12 Гц.

Неудобным является то, что по графику невозможно определить амплитуду этих гармоник. Чтобы сделать это, необходимо весь вектор yразделить на число его элементовN:

>> N=length(y);

>> a=abs(v)/N;

>> plot(f1(970:1030),a(970:1030));grid;

>> title('F/N');

>> xlabel('friquency, Hz');

>> ylabel('abs(F(X))/N')

Соседние файлы в папке НОВИКОВ_2013-14