Рефераты. Система математических расчетов MATLAB

                                            (SIN(X) является синусом элементов массива Х)

Тело функции

Тело функции содержит все коды системы MATLAB, которые осуществляют вычисления и определяют значения выходных переменных. Выражения в теле функции состоят из обраще-ний к другим функциям, программных конструкций  типа команд циклов, ввода и вывода, вычислений, операторов присваивания, комментариев и пустых строк. Например, тело функ-

ции average содержит нескольких простых программных выражений:


                              [m,n] = size(x);

                              if (~((m == 1) | (n == 1)) | (m == 1 & n == 1)) % Flow control

                                       error('Input must be a vector') % Error message display

                              end

                              y = sum(x)/length(x); % Computation and assignment

Комментарии

Как было указано ранее, строки комментариев начинаются с символа процента (%). Строки комментариев могут быть в любом месте М-файла, а также вы можете добавить коммента-рии к концу строки кодов программы. Например,


                                      % Add up all the vector elements.

                                      y = sum(x)      % Use the sum function.

                                     ( % Суммирование всех элементов вектора.

                                      y = sum(x)      % Используйте функцию sum)

     

Первая строка комментариев, следующая  непосредственно за строкой определения функции рассматривается как строка H1 данной функции. Строка H1 и любые строки комментариев, непосредственно следующие за Н1, составляют запись оперативной помощи для  данного файла. В дополнение к строкам комментариев, вы можете вводить пустые строки в любом месте М-файла. Пустые строки игнорируются. С другой стороны, пустая строка может обозначать конец текста помощи.



Имена функций

Имена функций в MATLAB-е имеют те же ограничения, что и имена переменных. MATLAB использует первые 32 символа имени. Имена функций должны начинаться с буквы; осталь-ные знаки могут быть любой комбинацией букв, цифр и  символов подчеркивания. Некото-рые операционные системы могут вводить свои ограничения на длину имен функций.

Название текстового файла, который содержит функцию MATLAB-а, состоит из имени фун-кции с добавленны расширением  .m . Например, average.m. Если имя файла и имя функции в ее строке определения отличаются, то внутреннее имя игнорируется.

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


Как работает функция

Вы можете вызвать М-функцию как из командной строки MATLAB-а, так и из другого М-файла. Убедитесь, что вы включили все необходимые аргументы, заключив входные аргу-менты в обычные скобки, а выходные – в квадратные.

Определение имени функции

Когда MATLAB сталкивается с новым именем, он осуществляет следующую последователь-ность шагов:

  1. Проверяет, не является ли имя переменной.
  2. Проверяет, не является ли имя подпрограммой (subfunction), то есть функцией  MATLAB–а, которая находится в пределах того же М-файла, что и вызываемая функ-ция.
  3. Проверяет, не является ли имя частной функцией (private function),  то есть функцией, которая находится  в специальной директории под названием Private (private directo-ry) , то есть директории доступной только для М-файлов в пределах той же директо-рии где она сама находится.
  4. Проверяет, находится ли данная  на пути доступа MATLAB-а. MATLAB обращается к  первому встреченному файлу с заданным именем. Если вы дублируете имена функ-ций, MATLAB обращается к первой встреченной на основe приведенной выше проце-дуры.

Что происходит при вызове  функцию

Когда вы вызываете М-файл из командной строки или же из пределов другой М-функции, MATLAB осуществляет синтаксический анализ функции и преобразует ее в псевдокод, ко-торый запоминается в памяти. Это исключает необходимость повторного анализа функции при каждом последующем ее вызове в пределах данного сеанса работы. Псевдокод сохраня-ется в памяти до тех пор пока вы не удалите его с помощью команды clear, или пока вы не выйдете из MATLAB-а.

В приведенной ниже таблице даны основные варианты применения комнды clear для удаления любых функций из рабочего пространства MATLAB-а.

Синтаксис

Описание

clear function_name

Удаляет заданную функцию из рабочего пространства

clear functions

Удаляет все скомпилированные М-функции

clear all

Удаляет все переменные и функции

 

Создание P-кодов файлов

Вы можете запомнить предварительно скомпилированные функции или сценарии, называе-мые псевдокодами (P-code) файлов, для использования их в последующих сеансах работы. Например, команда

pcode average

 

компилирует функцию average.m и запоминает полученный псевдокод в файле называемом average.p. Это позволяет MATLAB-и исключить операцию компилирования при первом вы-зове функции в каждом сеансе работы. В принципе, MATLAB осуществляет компиляцию ве-сьма быстро, так что запоминание функции в виде псевдокода редко дает большой выигрыш в быстродействии. Единственная ситуация где псевдокод действительно дает ощутимый вы-игрыш во времени, связана с применением сложных Графических Интерфейсов Пользова-теля (GUI) в различных приложениях. В этом случае множество М-файлов должны быть скомпилировано прежде чем GUI станет видимым. Другая ситуация, где использование псе-вдокода является оправданным, имеет место при необходимости сохранить права собствен-ности, то есть когда вы хотите исключить возможность применения вашего алгоритма другими лицами.

Как MATLAB передает аргументы функции

С точки зрения программиста создается впечатление, чтоMATLAB передает функции все ар-гументы в виде их значений. В действительности, однако,  MATLAB передает значения толь-ко тех аргументов, которые изменяются данной функцией. Если функция не изменяет соот-ветствующий аргумент, а просто использует его при вычислениях, MATLAB передает аргу-мент в виде ссылки на него (на его расположение в памяти) с целью оптимизации использо-вания памяти.


Рабочие пространства функций

Каждая М-функция имеет в памяти свое рабочее пространство, отдельное от основного рабо-чего пространства MATLAB-а, в котором она работает. Это пространство называется рабо-чим пространством функции, причем разные функции имеют разные рабочие пространства.

При использовании MATLAB-а, вы имеете доступ только к тем переменным, которые нахо-дятся в вызывемом контексте, будь это основное рабочее пространство или рабочее прост-ранство какой-то функции. Переменные, которые вы передаете функции, должны быть рас-положены в пространстве вызова, и , в свою очередь, функция возвращает выходные аргу-менты в то же самое рабочее пространство вызова. Вы можете, однако, определить перемен-ные как глобальные, что дает возможность доступа к  ним из разных рабочих пространств.


Проверка числа аргументов функции

Функции nargin и nargout позволяют вам определить число входных и выходных аргумен-тов функции. Вы можете использовать эти функции с условными операторами для выполне-ния различных задач в зависимости от числа аргументов. Например,


                                                         function c = testarg1(a,b)

                                                         if (nargin == 1)

                                                                 c = a.^2;

                                                         elseif (nargin == 2)

                                                                  c = a + b;

                                                         end

При одном входном аргументе, данная функция вычисляет квадрат входной величины. Если заданы два входных аргумента, функция осуществляет их сложение.


Передача переменного числа аргументов

Функции varargin и varargout дают возможность передачи функции любого переменного числа аргументов или возвращать переменное число выходные аргументов. При использова-нии функци varargin  MATLAB объединяет все заданные входные аргументы в массив яче-ек. Если вы используете функцию varargout, то ваша программа должна обеспечить объе-динение выходных переменных в массив ячеек, с тем чтобы MATLAB имел возможность вернуть их в пространство вызова. Ниже дан пример функции, которая принимает любое число двумерных векторов, и наносит на графике линию, соединяющую соответствующие точки.


                                                  function testvar (varargin)

                                                  for i = 1:length (varargin)

                                                        x(i) = varargin{i}(1);

                                                        y(i) = varargin{i}(2);

                                                  end

                                                  xmin = min(0,min(x));

                                                  ymin = min(0,min(y));

                                                  axis([xmin   fix(max(x)) + 3   ymin   fix(max(y)) + 3])

                                                   plot(x,y)


Функция testvar рабоает с различным числом входных переменных; например, вы можете  ввести два различных набора данных

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.