Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кусайкин Д.В / ЦОС заочникам / Лабораторная работа _1.doc
Скачиваний:
70
Добавлен:
11.04.2015
Размер:
221.18 Кб
Скачать

Xlabel('ВремЯ, с'); ylabel('Уровень'); % надписи вдоль осей

grid on % координатнаЯ сетка

________________________________________________________________

Сохраните файл ( «File» => «Save») с именемsignal.mв созданную ранее вами папку. Далее в окнеMATLAB(!!!не редактораEditor!!!) выберете «File» => «SetPath»

В появившемся окне нажмите «AddFolder», выберите вашу папку на рабочем столе, нажмите ОК.

Зарисуйте полученный график. Посчитайте, сколько отсчетов на одном периоде сигнала.

Задание 3. Данный способ хорош тем, что вместо сторонних программных продуктов используется собственный инструментарийMatlab, специализированный для написания и отладкиm-скриптов.

Генерирование сигналов путем создания m-функции. Данный способ отличается тем, что входные данныезаписываюткак аргумент некоей функции, а выходные – как значение этой функции. Удобство в том, что символьные обозначения данных могут отличаться от обозначений, используемых в теле функции. Более того, числовые значения входных данных можно просто задавать в наименовании вызываемой функции. Очевидно, обозначениявходных и выходных данных вызывающей программы должны совпадать с обозначениями соответствующих данных вызываемой подпрограммы.

Теперь поступим по-иному – напишем и сохраним m-функцию под именемton_sig.m:

Для этого в редакторeEditorсоздайте новую функцию, выбрав «File» => «New» => «Functon».

Введите следующий код

function [t z]=Signal_Discret(A,Fs,Phi,Nperiod,Np)

% функция, возврашающая значения

% моменты времени, в которые вычислены

% значения дискретного сигнала, и

% соответствующие значения дискретного сигнала

% A - амплитуда сигнала

% Fs - частота сигнала

% Phi - начальная фаза сигнала

% Nperiod - количество периодов сигнала,

% используемых для анализа

% Np - количество точек на один период сигнала

Ts=(1/Fs)*Nperiod; % длительность анализируемого сигнала

Td=Ts/(Nperiod*Np); % вычисление периода дискретизации сигнала

t=0:Td:Ts; % задание моментов времени,

% в которые вычисляются значения

% дискретного сигнала

z=Signal(A,Fs,Phi,t);

function z=Signal(A,Fs,Phi,t)

% A - амплитуда сигнала

% Fs - частота сигнала

% Phi - начальная фаза сигнала

% t - вектор, содержащий значения

% моментов времени, в которые вычисляются

% значения сигнала

z=A*sin(2*pi*Fs*t+Phi);

end

end

Сохраните функцию в вашу папку с именем Signal_Discret.m

В окне программы MATLAB (!!!не редактора!!!) задайте следующие параметры сигнала

Теперь вызовем функцию Signal_Discret.m

% Наберите

[t z]=Signal_Discret(A,Fs,Phi,Nperiod,Np)

% Постройте график сигнала

plot(t,z,t,z,'o')

Как видим, теперь числовые значения входных данных задаются как аргументы m-функции Выходные данные функции используются для построения графика.

Очевидно, применение m-функций выгодно тогда, когда алгоритм формирования значений функции достаточно сложный: содержится много команд и обращений к разнообразным библиотечным функциям с непростым синтаксисом.

Очевиден и недостаток m-функций – необходимо помнить их синтаксис. Впрочем, получить нужную информацию можно, если в командном окне задать командуhelp:

>> help Signal_Discret

В результате на мониторе отобразится комментарий, с которого начинается m-функция. Для приведенного выше примера текст помощи имеет следующий вид:

функция, возврашающая значения

моменты времени, в которые вычислены

значения дискретного сигнала, и

соответствующие значения дискретного сигнала

A - амплитуда сигнала

Fs - частота сигнала

Phi - начальная фаза сигнала

Nperiod - количество периодов сигнала,

используемых для анализа

Np - количество точек на один период сигнала

Таким образом, очевиден вывод: очень важно при программировании m-функций снабжать их качественным и подробным комментарием.