Теория и обработка сигналов MATLAB в ТОС, страница 4

Пример

» sin(A)

ans =

  8.4147e-001      9.0930e-001

  1.4112e-001      -7.5680e-001

Использование поэлементных  операций позволяет упрощать запись  математических выражений при вычислениях в Matlab

Пример.

Пусть требуется вычислить значения выражения       для  x  от 0 до  с шагом .  Вычисления в Matlab

» a = 2;   K = 5;

» x = 0 : pi/2/10 : pi/2;

» y = K * exp(-a*x).*sin(x)

y =

  Columns 1 through 6

            0  5.7130e-001    8.2428e-001    8.8451e-001    8.3645e-001    7.3497e-001

  Columns 7 through 11

            6.1419e-001       4.9407e-001     3.8519e-001    2.9218e-001    2.1607e-001

Полный список операций и операторов Matlab можно получить с помощью команды help ops.

ПрограммированиевMATLAB

Выше рассматривались примеры вычислений в Matlab в командном окне (режим прямых вычислений).  Несмотря на значительные возможности и широкое использование на практике этот режим имеет существенные недостатки. В нем нельзя повторить вычисления без повторного набора всех команд, невозможно возвратиться назад и т.д. Работа в этом режиме не является программированием. Поэтому сколько – нибудь сложные вычисления требуют, как правило, программирования на языке Matlab  и записи программ  в виде М – файлов.

Matlab является языком высокого уровня для научно-технических расчетов.  Он вобрал в себя все средства, необходимые для реализации различных видов программирования:

·  процедурного;

·  операторного;

·  функционального;

·  логического;

·  структурного (модульного);

·  объектно-ориентированного;

·  визуально-ориентированного.

Язык программирования MATLAB является интерпретатором. Это означает, что каждая инструкция программы распознается и тут же исполняется, что облегчает обеспечение диалогового режима общения с системой. Этап компиляции всех инструкций, т. е. полной программы, отсутствует. Однако для программ на языке MATLAB имеются и компиляторы, транслирующие программы MATLAB в коды языков программирования  С и C++. Компиляторы для системы MATLAB являются вполне самостоятельными программными средствами.  В курсе ТОС компиляторы  не используются.

Программа  MATLAB  может содержать

·  Данные различного типа;

·  Константы и переменные;

·  Операторы;

·  Встроенные команды и функции;

·  Управляющие структуры (условные операторы, циклы и т.п.);

·  Функции пользователя;

·  Системные операторы и функции.

М  - файлы  (M-files) – программы MATLAB текстового формата, они могут сохраняться как файлы с расширением .m, т.е. filename.m  и затем вызываться из командной строки или из другого m – файла.  

M – файлы могут быть функциями с входными и выходными переменными или файлами - сценариями – наборами команд и функций  MATLAB.  М  - файлы должны сохраняться или в рабочем каталоге или в одном из каталогов пути доступа  Matlab (Matlab search path). Для создания m –файлов может использоваться встроенный редактор Matlab или любой текстовый редактор.

Скрипт – файлы (script – files)  являются независимо исполняемыми блоками операторов и команд. Они содержат просто последовательность команд без входных и выходных  параметров.  Формат имени - filename.m. Скрипт - файл имеет следующую структуру:

%  Основной комментарий

%  Дополнительный комментарий

Тело файла с любыми выражениями

Такие файлы исполняются вводом имени файла в командную строку
>> filename

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

function   var = functionname (список параметров)

%  основной комментарий

%  дополнительный комментарий

тело  функции

var = выражение

Файл – функция всегда начинается со слова – объявления  function, после которого указывается имя выходной переменной var, имя самой функции и список её выходных переменных.  Все переменные в файл – функции являются локальными, т.е.  действуют только в теле самой функции.  Основной комментарий выводится при использовании команд lookfor и   help имя_каталога. Полный комментарий выводится как справочные сведения при использовании команды help имя_функции, поэтому важно указывать необходимые комментарии для файл – функций и файлов– сценариев.

Пример 1. Составим файл – функцию для вычисления длины гипотенузы прямоугольного треугольника по его катетам

function z=fun1(x,y)

% fun1 вычисляет sqrt(x^2+y^2)

% обращение  z=fun1(x,y)

z=sqrt(x^2+y^2);

Пример вызова функции

>> y=fun1(3,4)

y =

     5


Пример 2.

function    x = tri(T, sT, Ns)

% tri  генерирует Ns отсчетов сигнала треугольной формы

%   с  периодом T сек., частотой отсчетов sT отсчетов/сек

%  обращение   x = tri(T, sT, Ns)

x = 2*abs(round([0:Ns-1]/sT/T);

Пример вызова функции tri

>> y=tri(0.1,100,50);

Если выходных параметров больше одного, то они должны указываться в квадратных скобках после слова function. Структура такой файл – функции

function  [ var1,  var2,…]=fname(список параметров)

% основной комментарий

% дополнительный комментарий

тело функции

var1= выражение

var2= выражение

При вызове функции в этом случае нужно указывать все выходные и входные параметры, т.е. формат вызова имеет вид

[varl,var2,... ]=fnаmе(список параметров)

Пример 3.   Файл – функция вычисления дискретно – временного преобразования Фурье (ДВПФ)

function [X,w] = DTFT(x,M)

% Функция вычисляет значения DTFT от вектора x.

% Обращение

%             [X,w] = DTFT(x,0)

% здесь X - вектор значений DTFT,

% w - вектор угловых частот.

% Если желательно вычислить DTFT с M значениями частоты,

% используется обращение

%             [X,w] = DTFT(x,M)

%

% Этот вариант используется, когда размер вектора x 

% меньше  размера вектора частот w,

% при этом x дополняется нулевыми значениями

N = max(M,length(x));

% Приведение FFT к размеру 2^m

N = 2^(ceil(log(N)/log(2)))

% Вычисление  fft

X = fft(x,N);