MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

MATLAB

В.Г.Потемкин "Введение в Matlab" (v 5.3)
Глава 3. Программирование в среде Matlab 5

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

3.6. Вычисление строковых выражений

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

Eval
Вычисление строковых выражений

Синтаксис:

           eval('выражение')

Описание:

Функция eval('выражение') интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции.

Примеры

Вычислим текущее время t:

              format rational
               eval('t = clock')

               t = 1997   12    7   17   24   241/100

Следующий программный код позволяет сформировать матрицу Гильберта порядка n:

               t = '1/(i + j-1)';
               n = 4;
               for i = 1:n
                  for j = 1:n
                       G(i, j) = eval(t);
                  end
               end
               format rational
               G

               G =

1 1/2 1/3 1/4
1/2 1/3 1/4 1/5
1/3 1/4 1/5 1/6
1/4 1/5 1/6 1/7

 

Feval
Вычисление функции по заданному имени

Синтаксис:

            feval('<имя_функции>', x1, ..., xn)

Описание:

Функция feval отличается от функции eval тем, что она позволяет передать аргументы вызываемой функции. Используя функцию feval и функцию input, можно организовать диалог, который позволяет выбрать функцию из списка.

Пример
Пусть задан некоторый список функций fun е. Требуется выбрать по номеру функцию из списка и вычислить ее для заданного значения x:

             fun = ['sin'; 'cos'; 'log']
             fun =
                  sin
                  cos
                  log
             k = input('Указать номер функции в списке: ')
             Указать номер функции в списке: 2

             k =      2

             x = input('Ввести значение x: ')
             Ввести значение x: 1

             x =     1
            format rational
            feval(fun(k, :), x)

            ans =     429/794

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

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

Пример
Следующий фрагмент программного кода демонстрирует, как можно сформировать 3 переменных с именами P1, P2, P3 и присвоить каждой из них различное значение:

        for i=1 : 3
              eval(['P', int2str(i),' = i.^2'])
         end

         P1 =   1
         P2 =   4
         P3 =   9

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

 


Поиск по сайту:

Система Orphus

Яндекс.Метрика