Реферат Курсовая Конспект
Порядок виконання роботи - раздел Философия, Елементарний вступ в MATLAB 1. Генерація Послідовності Імпульсів. 2. Функції Генерації Періодичн...
|
1. Генерація послідовності імпульсів.
2. Функції генерації періодичних сигналів.
3. Генерація сигналу з мінливою частотою.
4. Формування випадкових сигналів.
Короткі теоретичні відомості та методичні вказівки
Дана Лабораторна робота є продовженням роботи 7, так що відповідні теоретичні відомості та методичні вказівки наведені у попередній роботі.
8.1. Генерація послідовності імпульсів
Функція pulstran служить для генерації кінцевої послідовності імпульсів (pulse train) однакової форми, затримки і рівні задаються довільно. Самі імпульси можуть задаватися одним із двох способів: ім'ям функції, яка генерує імпульс, або вже розрахованим вектором відліків. Якщо імпульси задаються ім'ям генеруючої функції, функція pulse train викликається наступним чином:
у = pulstran(t, d, 'func', p1, p2, ...).
Тут t - вектор значень часу, d - вектор затримок, 'func' - ім'я функції, яка генерує одиночний імпульс. B якісті цієї функції можуть використовуватися, наприклад, rectpuls, tripuls, gauspuls, а також будь-які інші функції (в тому числі і «саморобні»), що беруть в якості першого вхідного параметра вектор моментів часу і повертають вектор розрахованих відліків сигналу. Параметрі, що залишилися p1, р2, ... - додаткові, вони передаються функції func при її виклику.
Таким чином, функція pulstran в даному варіанті використання генерує вихідний сигнал наступним чином:
y = func(t-d(1), p1, p2, …) +…
func(t-d(2), p1, p2, …) +…
func(t-d(3), p1, p2, …) +…
Якщо d - двухстолбцовая матриця, то перший стовпець трактується як затримки імпульсів, а другий - як їх рівні. При цьому вихідний сигнал формується так:
y = d(1,1)* func(t-d(1,2), p1, p2, …) +…
d(2,1)* func(t-d(2,2), p1, p2, …) +…
d(3,1)* func(t-d(3,2), p1, p2, …) +…
В якості прикладу сформуємо послідовність з п'яти симетричних трикутних імпульсів, інтервали між якими лінійно збільшуються, а амплітуди експоненційно зменшуються. Частоту дискретизації виберемо рівною 1 кГц. Тривалість імпульсу - 20 мс.
function Example8_1
Fs=1e3; % частота дискретизації
t=0:1/Fs:0.5; % дискретний час
tau=20e-3; % тривалість імпульсу
d=[20 80 160 260 380]'*1e-3; % затримки імпульсів
d(:,2)=0.8.^(0:4)'; % амплітуди імпульсів
y=pulstran(t,d,'tripuls',tau);
plot(t,y) % На екрані послідовність трикутних імпульсів, сформована за допомогою функції pulstran.
Якщо для генерації одиночного імпульсу немає готової функції, можна розрахувати вектор відліків імпульсу, а потім використовувати другий варіант виклику функції pulstran:
y = pulstran(t, d, p, Fs, 'method')
Сенс вхідних параметрів t і d той же, що й раніше. Вектор p повинен містити відліки одиночного імпульсу, а параметр Fs вказує частоту дискретизації, використану при розрахунку цього вектора. Вважається, що перший відлік з вектора p відповідає нульовому моменту часу.
Оскільки частота Fs може не збігатися з кроком значень вектора t (в принципі, вони навіть не зобов'язані представляти собою рівномірну послідовність) і затримки з вектора d теж не обов'язково кратні цього кроку, для перерахунку затриманих імпульсів до сітки моментів часу t в загальному випадку необхідне використання інтерполяції. Метод інтерполяції може бути явно задано за допомогою строкового параметра 'method'. Можливі всі методи, підтримувані функцією interpl: 'nearest', 'linear', 'spline', 'pchip', 'cubic' і 'v5cubic'.
В якості прикладу сформуємо послідовність з шести імпульсів, що мають форму одного періоду функції sin2. Нехай тривалість імпульсу дорівнює 60 мс, а частота його дискретизації - 400 Гц. Відстань між центрами імпульсів буде однаковим і рівним 64 мс, а частота дискретизації вихідного сигналу - 1 кГц. Імпульси будуть експоненціально затухати з ростом номера.
function Example8_2
Fs0=400; % частота дискретизації імпульсу
tau=60e-3; % тривалість імпульсу
t0=0:1/Fs0:tau; % дискретний час для імпульсу
s0=sin(pi*t0/tau).^2; % вектор відліків імпульсу
Fs=1e3; % частота дискретизації послідовності
t=0:1/Fs:0.5; % дискретний час для послідовності
d=(1:6)'*64e-3; % затримки імпульсів
d(:,2)=0.6.^(0:5)'; % амплітуди імпульсів
y=pulstran(t,d,s0,Fs0);
plot(t,y)
На екрані послідовність імпульсів, сформована функцією pulstran з вектора відліків одиночного імпульсу.
8.2. Функції генерації періодичних сигналів
Ці функції, що входять в пакет Signal Processing, дозволяють формувати відліки періодичних сигналів різної форми:
square - послідовність прямокутних імпульсів;
sawtooth - послідовність трикутних імпульсів;
diric - функція Діріхле (періодична sinc-функція).
8.2.1. Послідовність прямокутних імпульсів
Для формування послідовності прямокутних імпульсів служить функція square. У найпростішому випадку ця функція приймає один вхідний параметр - вектор значень часу t: у = square(t).
Генерується при цьому послідовність імпульсів, що має період 2p і шпаруватість 2 (тобто тривалість імпульсу дорівнює половині періоду). Послідовність є двополярна - сигнал приймає значення -1 і 1. Сформувати послідовність з періодом Т можна наступним чином:
у = square(2*pi*t / T).
За допомогою другого вхідного параметра duty можна регулювати шпаруватість одержуваної послідовності. Однак цей параметр задає не саму шпаруватість, а зворотню їй величину - коефіцієнт заповнення (у відсотках), тобто відношення тривалості імпульсу до періоду: у = square (t, duty)
За замовчуванням значення параметра duty дорівнює 50, тобто генерується меандр.
В якості прикладу сформуємо послідовність однополярних прямокутних імпульсів з амплітудою 3 В, частотою проходження 50 Гц і тривалістю 5 мс. Будемо використовувати частоту дискретизації 1 кГц і часовий інтервал -10 ... 50 мс
function Example8_3
Fs=1e3; % частота дискретизації
t=-10e-3:1/Fs:50e-3; % дискретний час
A=3; % амплітуда
f0=50; % частота проходження імпульсів
tau=5e-3; % тривалість імпульсів
s=(square(2*pi*t*f0, f0*tau*100)+1)*A/2;
plot(t,s)
ylim([0 5]) % На екрані послідовність прямокутних імпульсів, отриманих за допомогою функції square.
8.2.2. Послідовність трикутних імпульсів
Для формування послідовності трикутних імпульсів служить функція sawtooth. У найпростішому випадку ця функція приймає один вхідний параметр - вектор значень часу t: у = sawtooth(t). Генерується при цьому послідовність імпульсів має період 2p. Протягом періоду сигнал лінійно наростає від -1 до 1. Сформувати послідовність з періодом Т можна наступним чином: у = sawtooth (2*pi*t / T).
За допомогою другого вхідного параметра width можна регулювати тривалість «зворотного ходу» - проміжку, на якому рівень сигналу лінійно падає від 1 до -1. При вказівці параметра width сигнал лінійно зростає від -1 до 1 за час 2p*width, а потім за час 2p*(1-width) лінійно убуває від 1 до -1:
у = sawtooth(t, width).
За замовчуванням значення параметра width дорівнює 1. При width = 0,5 буде послідовність симетричних трикутних імпульсів.
В якості прикладу сформуємо послідовність трикутних імпульсів негативною полярності з амплітудою 5 В, періодом 50 мс і тривалістю падаючого ділянки 5 мс. Будемо використовувати частоту дискретизації 1 кГц і часовий інтервал -25 ... 125 мс
function Example8_4
Fs=1e3; % частота дискретизації
t=-25e-3:1/Fs:125e-3; % дискретний час
A=5; % амплітуда
T=50e-3; % період
t1=5e-3; % тривалість падаючої ділянки
s=(sawtooth(2*pi*t/T, 1-t1/T)-1)*A/2;
plot(t,s) % На екрані послідовність трикутних імпульсів отримана за допомогою функції sawtooth.
8.2.3. Функція Діріхле
Функція Діріхле описується формулою
,
де п - ціле позитивне число.
Як приклад побудуємо графіки функції Діріхле при непарному і парному значеннях п (п = 7 і п = 8):
function Example8_5
x=0:0.01:15;
plot(x,diric(x,7))
grid on
title('n=7')
figure
plot(x,diric(x,8))
grid on
title('n=8')
На екрані функція Діріхле непарного і парного порядку.
8.3. Генерація сигналу з мінливою частотою
Функція chirp призначена для генерації коливань з одиничною амплітудою, миттєва частота яких змінюється за заданим законом:
у = chirp(t, f0, t1, f1, 'method', phi).
Тут t - вектор значень часу, phi - початкова фаза коливання. Інші параметри визначають закон зміни частоти.
Рядковий параметр 'method'визначає тип залежності миттєвої частоти від часу - 'linear', 'quadratic' або 'logarithmic'. Числові параметри f0, t1 і f1 створюють опорні точки для розрахунків: у нульовий момент часу миттєва частота дорівнює f0, а в момент часу tl вона дорівнює fl.
Математично закон зміни миттєвої частоти виглядає наступним чином:
'linear': , де ;
'quadratic': , де ;
'logarithmic': , де .
В якості прикладу сформуємо три сигнали, визначених на проміжку 0 ... 1 с і мають різні закони зміни миттєвої частоти. У нульовий момент часу всі сигнали мають миттєву частоту 1 кГц, а в момент часу 1с - 2 кГц. Частоту дискретизації виберемо рівною 8 кГц:
function Example8_6
Fs=8e3; % частота дискретизації
t=0:1/Fs:1; % дискретний час
f0=1e3;
t1=1;
f1=2e3;
s1=chirp(t,f0,t1,f1,'linear');
s2=chirp(t,f0,t1,f1,'quadratic');
s3=chirp(t,f0,t1,f1,'logarithmic');
specgram(s1,[],Fs)
title('linear')
colormap gray
figure
specgram(s2,[],Fs)
title('quadratic')
colormap gray
figure
specgram(s3,[],Fs)
title('logarithmic')
colormap gray
На екрані спектрограми сигналів при лінійному, квадратичному і експоненційному законах зміни миттєвої частоти.
8.4. Формування випадкових сигналів
Для генерації випадкових чисел в MATLAB служать функції rand (рівномірний розподіл) і randn (нормальний розподіл), а також кошти пакета розширення Statistics, які реалізують безліч різних законів розподілу ймовірності.
8.4.1. Реалізація заданого закону розподілу ймовірності
У пакеті Statistics є засоби генерації випадкових чисел з різними законами розподілу ймовірності.
Нехай X - випадкова величина, рівномірно розподілена на інтервалі 0 ... 1. Для отримання випадкової величини Y, що має функцію розподілу Fy(y), випадкову величину X необхідно піддати наступного нелінійного перетворення:
(8.1)
де Fy(-1)- зворотна функція по відношенню до Fy(y).
Як приклад сгенерируем за формулою (8.1) випадкові числа з релєєвськоє законом розподілу.
Зворотна функція буде мати вигляд:
(8.2)
Генеруємо рівномірно розподілені випадкові числа з допомогою функції rand, виробляємо їх перетворення за формулою (8.2) і будуємо гістограму за допомогою функції hist:
function Example8_7
N=10000; % кількість чисел
sigma=1; % параметр релєєвського закону
X=rand(1,N); % рівномірний розподіл
Y=sigma*sqrt(-2*log(1-X)); % закон Релея
hist(Y,25) % гістограма по 25 інтервалам
На екрані представлена гістограма випадкових чисел з релєєвськоє розподілом
Питання для самоперевірки
1. Як генеруються послідовності імпульсів?
2. Як генеруються періодичні сигнали?
3. Як генеруються сигнали з мінливою частотою?
4. Як формуються випадкові сигнали?
5. Як реалізується заданий закон розподілу ймовірності?
– Конец работы –
Эта тема принадлежит разделу:
МОЛОДІ ТА СПОРТУ УКРАЇНИ... Національний авіаційний університет... СПЕЦІАЛІЗОВАНІ АРХІТЕКТУРИ КОМП ЮТЕРІВ Лабораторний практикум для студентів напряму...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Порядок виконання роботи
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов