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

Лабораторна робота № 4

Дискретні сигнали в MATLAB. Генерація послідовності

Імпульсів” Генерація послідовності імпульсів

Функція pulstran служить для генерації кінцевої послідовності імпульсів (pulse train) однакової форми з затримками, що довільно задаються. Самі імпульси можуть задаватися одним із двох способів: ім'ям функції, що генерує імпульс, або вже розрахованим вектором відліків.

Якщо імпульси задаються ім'ям функції, що генерує, функція pulstran викликається таким чином:

у = pulstran(t, d, 'func', pi, p2, ...)

Тут t — вектор значень часу, d — вектор затримок, ' func' — ім'я функції, що генерує одиночний імпульс. В якості цієї функції можуть використовуватися, наприклад, rectpuls, tripuls, gauspuls, а також будь-які інші функції (у тому числі і «саморобні»), що приймають в якості першого вхідного параметра вектор моментів часу і повертаючого вектор розрахованих відліків сигналу. Параметри, що залишилися, pi, р2, ... — додаткові, вони передаються функції func при її виклику.

Таким чином, функція pulstran в даному варіанті використання генерує вихідний сигнал таким чином:

у = func(t-d(1), p1, р2, ...) + ... func(t-d(2), pi, р2, ...) + ... func(t-d(3), pi, р2, ...) + ...

Якщо d — двухстовбцева матриця, то перший стовпець трактується як затримки імпульсів, а другий — як їхні рівні. При цьому вихідний сигнал формується так:

у = d(l.l) * func(t-d(l,2), p1, p2. ...) + ...

d(2,l) * func(t-d(2,2), p1, p2, ...) + ...

d(3,l) * func(t-d(3,2), p1, p2, ...) + ...

Вправа 1

Сформуємо послідовність з п'яти симетричних трикутних імпульсів, інтервали між якими лінійно збільшуються, а амплітуди зменшуються за експонентою. Частоту дискретизації виберемо рівною 1 кГц. Тривалість імпульсу — 20 мс. Результат показаний на мал. 4.1:

» Fs = 1еЗ; % частота дискретизації

» t = 0:l/Fs:0.5; % дискретний час

» tau = 20е-3; % тривалість імпульсу

» d = [20 80 160 260 380]' * 1е-3; % затримки імпульсів

» d(:,2) = 0.8.^(0:4)'; % амплітуди імпульсів » у = pulstran(t, d, 'tripuls', tau); » p1ot(t, у)

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

у = pulstran(t, d, p. fs, 'method')

Зміст вхідних параметрів t і d той же, що і раніше. Вектор р повинний містити відліки одиночного імпульсу, а параметр fs вказує частоту дискретизації, використану при розрахунку цього вектора. Вважається, що перший відлік з вектора р відповідає нульовому моменту часу.

Рис. 4.1. Послідовність трикутних імпульсів, сформована за допомогою функції pulstran

Оскільки частота fs може не збігатися з кроком значень вектора t (в принципі вони навіть не зобов'язані уявляти собою рівномірну послідовність) і затримки вектора d теж не обов'язково кратні цьому крокові, для перерахування затриманих імпульсів до сітки моментів часу t в загальному випадку необхідне використання інтерполяції. Метод інтерполяції може бути явно заданий за допомогою строкового параметра ' method'. Можливі всі методи, підтримувані функцією interpl: 'nearest', 'linear', 'spline', 'pchip', 'cubic' і 'v5cubic'.

Параметри fs і 'method' при виклику можуть опускатися, в цьому випадку використовуються їхні значення за замовчуванням: f s = 1 і 'method1 = 'linear'.

Вправа 2

Сформуємо послідовність із шести імпульсів, що мають форму одного періоду функції sin2. Нехай тривалість імпульсу дорівнює 60 мс, а частота його дискретизації — 400 Гц. Відстань між центрами імпульсів буде однаковим і рівним 64 мс, а частота дискретизації вихідного сигналу — 1 кГц. Імпульси будуть загасати за експонентою з ростом номера. Результат показаний на мал. 4.2.

» % генеруємо вектор відліків одиночного імпульсу

» Fs0 = 400; % частота дискретизації імпульсу

» tau = 6Ое-3; % тривалість імпульсу

» t0 = 0:l/Fs0:tau; % дискретний час для імпульсу

» s0 = sin(pi*t0./tau).^2; % вектор відліків імпульсу

» % генеруємо послідовність імпульсів

» Fs = 1еЗ; % частота дискретизації послідовності

» t = 0:l/Fs:0.5; % дискретний час для послідовності

» d = (1:6)' * 64е-3; % затримки імпульсів

» d(:,2) = 0.6.^(0:5)'; % амплітуди імпульсів

» % послідовність імпульсів

» у = pulstran(t, d, s0, Fs0);

» plot(t, у)

Рис. 4.2. Послідовність імпульсів, сформована функцією pulstran з вектора відліків одиночного імпульсу

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