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

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('Гармонійний сигнал') % заголовок

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