- •Лабораторна робота №4
- •1. Робоче завдання
- •2. Теоретичні відомості. Дискретні сигнали в Matlab й Simulink
- •3. Моделювання дискретних сигналів в Matlab
- •Xlabel('Время, с'); ylabel('Рівень'); % написи уздовж осей
- •Xlabel('Время, с'); ylabel('Рівень'); % напису уздовж осей
- •Xlabel('Час, с'); ylabel('Рівень'); % напису уздовж осей
- •4. Моделювання дискретних сигналів в Simulink
3. Моделювання дискретних сигналів в Matlab
Генерувати сигнали в Matlab можна трьома способами:
у діалоговому режимі, за допомогою послідовності команд у командному вікні;
в автоматичному режимі, шляхом створення й запуску на виконання m-скрипту;
в автоматичному режимі, шляхом створення й виклику m-функції.
Генерування сигналів у діалоговому режимі. Цей спосіб найбільш трудомісткий, оскільки вимагає кожну команду набирати із клавіатури в командному вікні. Щоб підвищити продуктивність праці, можна всю послідовність команд попередньо набрати в будь-якому текстовому редакторі (звичайно це Notebook або Word), а потім, скопіювавши текст у буферну пам'ять (Clipboard), вставити його в командне вікно. Недолік цього способу в тім, що необхідно одночасно тримати активними дві програми – Matlab і текстовий редактор. Такий стиль роботи типовий, наприклад, при проведенні лабораторних робіт [1].
Наприклад, так виглядає в текстовому редакторі послідовність команд генерування N відліків тонального сигналу амплітудою A, частотою f0, початковою фазою Fi0, із частотою дискретизації fs:
% гармонійний сигнал
A=1; f0=100; Fi0=pi/2; fs=1000; N=20; % параметри сигналу
t=(0:N-1)/fs; % моменти часу
s=A*sin(2*pi*f0*t+Fi0); % обчислення відліків сигналу
plot(t,s) % вивід графіка
title('Гармонійний сигнал') % заголовок
Xlabel('Время, с'); ylabel('Рівень'); % написи уздовж осей
grid on % координатна сітка
Генерування сигналів шляхом створення m-скрипта. Даний спосіб відрізняється тим, що всі команди набираються в спеціальному вікні редактора m-файлів.
Даний спосіб гарний тим, що замість сторонніх програмних продуктів використовується власний інструментарій Matlab, спеціалізований для написання й налагодження m-скриптов.
Генерування
сигналів шляхом створення m-функції.
Даний спосіб
відрізняється тим, що вхідні дані
записують
як
аргумент якоїсь функції
,
а вихідні – як значення цієї функції.
Зручність у тому, що символьні позначення
даних можуть відрізнятися від позначень,
використовуваних у тілі функції. Більше
того, числові значення вхідних даних
можна просто задавати в найменуванні
функції, що викликається. Останню
обставину продемонструємо на прикладі.
Створимо підпрограму - m-скрипт ton.m виду:
% скрипт ton
s=A*sin(2*pi*f0*t+Fi0); % обчислення відліків сигналу
Команду виконання цього скрипту потрібно «оточити» командами підготовки вхідних даних і виводу вихідних даних:
A=1; f0=100; Fi0=pi/2; fs=1000; N=20; % параметри сигналу
t=(0:N-1)/fs; % моменти часу
ton; % обчислення відліків сигналу
plot(t,s) % вивід графіка
title('Гармонійний сигнал') % заголовок
Xlabel('Время, с'); ylabel('Рівень'); % напису уздовж осей
grid on % координатна сітка
Очевидно, позначення вхідних і вихідних даних програми повинні збігатися з позначеннями відповідних даних підпрограми, що викликається.
Тепер зробимо по-іншому – напишемо й збережемо m-функцію під ім'ям ton_sig.m:
%-і-і-і-функція ton_sig.m -і-і-і-і-і-
% [s,t]=ton_sig(B,f1,Fi1,Fs,N1)
%-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-
% генерування гармонійного сигналу
% y = B * sin(2*pi*f1*x + Fi1),
% B - амплітуда;
% N1 - кількість отсчетов сигналу;
% f1 - частота;
% Fs - частота дискретизації;
% Fi1 - початкова фаза сигналу
%-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-
function [y,x] = ton_sig( B, f1, Fi1, Fs, N1 )
%-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-
x = (0:N1-1)/Fs; % моменти часу
y = B * sin( 2*pi*f1*x + Fi1 );
%-і-і-і-і кінець функції ton_sig.m -і-і-і-і-і
Тепер m-скрипт генерування того ж відрізка косинусоїди буде виглядати так:
% гармонійний сигнал
[s,t]=ton_sig(1,100,pi/2,1000,20) % обчислення відліків сигналу
plot(t,s) % вивід графіка
title('Гармонійний сигнал') % заголовок
