Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_05.doc
Скачиваний:
6
Добавлен:
07.09.2019
Размер:
102.91 Кб
Скачать

Лабораторна робота № 5 Тема: ”Дискретні сигнали в matlab. Формування випадкових сигналів”

Формування випадкових сигналів

Для генерації випадкових чисел у MATLAB служать функції, rand (рівномірний розподіл) і randfi (нормальний розподіл), а також засоби пакета розширення Statistics, що підтримують безліч різних законів розподілу імовірності. У даному розділі ми коротко розглянемо формування дискретних випадкових сигналів із заданим розподілом імовірності і кореляційних властивостей.

Реалізація заданого закону розподілу імовірності

Засоби генерації випадкових чисел з різними законами розподілу імовірності маються в пакеті Statistics. Розглянемо лише загальний спосіб одержання випадкових чисел із заданою функцією розподілу на основі рівномірно розподілених випадкових чисел.

Нехай X — випадкова величина, рівномірно розподілена на інтервалі 0...1. Для одержання випадкової величини F, що має функцію розподілу Fy(y), випадкову величину X необхідно піддати наступному нелінійному перетворенню:

(5.1)

де Fy — функція, зворотня стосовно Fy(y).


Але X має рівномірний розподіл, тому


Таким чином,



Дійсно, при такому розрахунку імовірність того, що F не перевищує значення y

тобто Y дійсно має необхідну функцію розподілу.

З теоретичної точки зору розглянутий підхід є універсальним, однак на практиці він може виявитися незручним, оскільки зворотні функції розподілу для багатьох законів (наприклад, для нормального) не виражаються через елементарні функції. У таких випадках приходиться використовувати більш витончені методики.

Формулу (5.1) можна узагальнити на випадок довільного перетворення функції розподілу. Якщо випадкова величина X має функцію розподілу Рx(х), а потрібно одержати випадкову величину Y з функцією розподілу Fy(y), шукане перетворення варто записати таким чином:

Перетворення FX(X) робить розподіл випадкової величини рівномірним, а перетворення Fy(-l)(...) формує випадкову величину з заданим розподілом імовірності.

Вправа 1

З

(5.2)

генеруємо по формулі (5.1) випадкові числа з релеевським законом розподілу . Функція розподілу для закону Релея виходить інтегруванням його щільності імовірності:

Зворотня функція буде мати вигляд

Генеруємо рівномірно розподілені випадкові числа за допомогою функції rand, робимо їхнє перетворення по формулі (5.2) і будуємо гістограму за допомогою функції hist (мал. 5.1):

» N = 10000; % кількість чисел

» sigma =1; % параметр релеевского закону

» X = rand( N); % рівномірний розподіл » Y = sigma * sqrt(-2 * log(1 - X)); % закон Релея » hist(Y, 25)% гістограма по 25 інтервалам

Рис. 5.1. Гістограма випадкових чисел з релеєвським розподілом

Реалізація заданої кореляційної функції

Оскільки кореляційна функція випадкового сигналу однозначно зв'язана з його спектром , для формування сигналу з заданої КФ можна взяти відліки білого шуму і пропустити їх через фільтр з відповідної АЧХ (ФЧХ фільтра не має значення, оскільки до випадкових процесів не застосовується поняття фазового спектра).

Вправа 2

Сформуємо сигнал з експонентною функцією кореляції:

(5.3)

Для формування сигналу з такою КФ необхідно пропустити білий шум через дискретний фільтр, кореляційна функція імпульсної характеристики якого має вигляд (5.3). Цій вимозі задовольняє імпульсна характеристика виду

Така характеристика відповідає рекурсивному фільтру першого порядку з коефіцієнтом зворотнього зв'язку, рівним а. Необхідну фільтрацію здійснимо за допомогою функції filter :

» Х0 = randn(1, 1000); % незалежні нормальні відліки

» а = 0.9; % параметр експонентної кореляції

» sigma = 2; % середнєквадратичне значення результату

» X = filter(sigma*sqrt(l-a^2), [1 -а], Х0); % фільтрація

» subplot(2, 1, 1)

» plot(X0(l:200)) % графік білого шуму

» title('White noise')

» subplot(2, 1,2)

» plot(X(l:200)) % графік кореляційного шуму

» title('Correlated noise')

Графіки білого шуму і експоненціально-кореляційного сигналу показані на Рис. 5.2. Добре видно, що кореляційний шум сильно згладжений у порівнянні з білим шумом.

Рис.5.2.

Розрахунок кореляційної матриці

Для оцінки кореляційної матриці випадкового сигналу по вектору його відліків з використанням тимчасового усереднення служить функція corrmtx, що має наступний синтаксис:

[X, R] = corrmtx(x, m, 'method')

Тут х — вектор відліків сигналу, m — розмірність кореляційної матриці, що розраховується. Необов'язковий строковий параметр 'method' керує тим, як обробляються крайні відліки сигналу. З його можливими значеннями можна познайомитися по документації пакета Signal Processing.

Результатами роботи функції є матриця проміжних даних X і власне кореляційна матриця R, що розраховується як X' *Х (апостроф у MATLAB позначає ермітове сполучення).

Поняття «кореляційна» у MATLAB використовується, зрозуміло, у закордонному трактуванні . Це означає, що функція corrmtx не віднімає із сигналу постійну складову перед обчисленням кореляційної матриці.

Вправа 3

Обчислимо кореляційні матриці і побудуємо графіки їхніх перших рядків (тобто кореляційних функцій) для сформованих у попередньому розділі білого шуму Х0 і експоненціально-кореляційного шуму X (мал. 5.3).

Рис. 5.3. Оцінка кореляційної функції білого (зверху) і експоненціально-кореляційного (знизу) шуму

» N = 20; % розмір кореляційної матриці

» [tmp, R0] = corrmtx(X0, N);

» [tmp, R] = corrmtx(X, N);

» k = 0:N; % індекси КФ

» subplot(2, 1,1)

» % графік КФ білого шуму

» stem(k, R0(l,:))

» title('White noise')

» subplotf(2, 1, 2)

» % графік КФ корельованого шуму

» stem(k, R(l,:))

» title('Correlated noise')

З графіків видно, що відліки білого шуму дійсно некорельовані, а відліки фільтрованого шуму дійсно дають необхідну експонентну функцію кореляції.

Генерація дискретного нормального білого шуму

Дискретний білий шум з нормальним розподілом можна згенерувати за допомогою функції randn, що має наступний синтаксис:

X = randn(m, n)

У результаті виклику функції генерується масив X, що містить m рядків і n стовпців псевдовипадкових чисел, що мають нормальний розподіл з нульовим математичним чеканням і одиничною дисперсією.

Параметр n при виклику можна опустити, за замовчуванням використовується значення n = m, тобто генерується квадратна матриця.

В задачах, зв'язаних з обробкою сигналів, для генерації дискретного нормального білого шуму зручніше використовувати функцію wgn (white Gaussian noise) пакета Communications, оскільки вона дозволяє в явному виді задавати рівень генеруючого шуму. Синтаксис виклику функції наступний:

у = wgn(m, n, p, imp, state, 'powertype', 'outputtype');

Тут m, n — як і раніше, розміри генеруючої матриці, р — потужність генеруючого шуму в одиницях, що задаються параметром ' powertype' (за замовчуванням — у децибелах). Інші параметри є необов'язковими і мають значення за замовчуванням.

Параметр imp задає імпеданс навантаження в омах (передбачається, що генеруються відліки випадкової напруги на цьому навантаженні). За замовчуванням використовується імпеданс навантаження, рівний 1 Ом.

Параметр state дозволяє примусово задавати початковий стан генератора гаусовських випадкових чисел MATLAB (функція randn). За замовчуванням використовується поточний стан.

Строковий параметр 'powertype' задає одиниці виміру потужності, які використовуються при вказівці параметра р. Можливі наступні значення:

  • 'dВ' — потужність р задається в децибелах, значенню 0 дБ відповідає одинична дисперсія (якщо використано параметр imp, дисперсія дорівнює imp2);

  • ' dBm' — потужність р задається в децибелах, значенню 0 дБ відповідає дисперсія, яка дорівнює 10-3

  • 'linear' — потужність р задається у ватах, дисперсія генеруючого шуму дорівнює p*imp.

Строковий параметр 'outputtype' дозволяє задавати генерацію дійсного або комплексного шуму. Можливі значення ' real' (дійсний шум; генерується за замовчуванням) і 'complex' (комплексний шум). Якщо генерується комплексний шум, його дійсна і уявна частини мають потужності р/2.

Додавання білого шуму до сигналу

В тому ж пакеті Communications мається ще одна корисна функція, що працює з нормальним білим шумом. Це функція awgn, що реалізує канал зв'язку з адитивним білим гаусовим шумом (additive white Gaussian noise channel, AWGN channel), тобто, що додає до сигналу білий шум із заданим рівнем. Синтаксис виклику функції наступний:

у = awgn(x, snr, sigpower, state, 'powertype');

Тут х — вектор відліків сигналу. Скаляр snr задає відношення сигнал/шум в одиницях, що задаються параметром 'powertype' (за замовчуванням — у децибелах). Інші параметри є необов'язковими і мають значення за замовчуванням.

Параметр sigpower вказує потужність сигналу х в одиницях, що задаються параметром 'powertype' (за замовчуванням — в децибелах). За замовчуванням передбачається, що потужність сигналу дорівнює 0 дБ. Параметр sigpower може також приймати строкове значення 'measured', при цьому потужність сигналу автоматично вимірюється.

Цілочисловий параметр state дозволяє примусово задавати початковий стан генератора гаусових випадкових чисел MATLAB (функція randn). За замовчуванням використовується поточний стан.

Строковий параметр 'powertype' задає одиниці виміру потужності, які використовуються при вказівці параметрів snr і sigpower. Можливі наступні значення:

  • ' d' — потужність сигналу і відношення сигнал/шум задаються в децибелах;

  • 'linear' — потужність сигналу задається у ватах, відношення сигнал/шум — у разах.

При розрахунку потужності сигналу передбачається, що значення вектора х являють собою відліки напруги на навантажені з імпедансом 1 Ом.

Результатом роботи є вектор «зашумлених» відліків у. Якщо значення х є дійсним, функція awgn додає дійсний шум, якщо комплексними — комплексний.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]