Моделирование в системе MATLAB. Часть 1. Основы работы в MATLAB. Терёхин В.В. - 101 стр.

UptoLike

Составители: 

99
Функция eval позволяет обработать ошибки, используя при
обращении к ней два аргумента eval('try', 'catch'). Здесь 'try' - строка,
содержащая исполняемое выражение, а 'catch’ - строка, содержащая
обращение к функции обработки ошибки или ошибок.
Если операция, определенная строкой 'try', выполняется пра-
вильно, то функция eval просто возвращает результат; если же гене-
рируется ошибка, то функция
обработки ошибок, указанная в строке
'catch', определяет ошибку, генерируемую строкой 'try', и выполняет
действия, которые позволяют избежать этой ошибки.
Функция eval('try', 'catch') особенно полезна в связке с функ-
цией lasterr. Функция lasterr возвращает строку, содержащую по-
следнее сообщение об ошибке. Применяя функцию lasterr внутри
функции обработки ошибок, можно перехватить и проанализировать
сообщение
об ошибке, сгенерированное выполняемой функцией.
Пример. Следующая М-функция catch(A, B) для обработки
ошибок использует встроенную функцию lasterr, чтобы проверить
сообщение об ошибке, которая возникает из-за несогласованности
размеров операндов. Если возникает ошибка, то программа уменьша-
ет размеры одной из матриц:
function C = catch(A, B)
l = lasterr;
j = findstr(l, 'Inner matrix dimensions');
if (~isempty(j))
[m, n] = size(A)
[p, q] = size(B)
if (n>p)
A(:, p+1:n) = []
else if (n < p)
B(n+1:p, :) = []
end
C = A*B;
else
C = 0;
end
Использование функции eval с
двумя аргументами, одним из
которых является функция catch, показано ниже:
clear
A = [1 2 3; 6 7 2; 0 1 5];
B = [9 5 6; 0 4 9];
eval('A*B','catch(A, B)')
m = 3
n = 3
p = 2
         Функция eval позволяет обработать ошибки, используя при
обращении к ней два аргумента eval('try', 'catch'). Здесь 'try' - строка,
содержащая исполняемое выражение, а 'catch’ - строка, содержащая
обращение к функции обработки ошибки или ошибок.
         Если операция, определенная строкой 'try', выполняется пра-
вильно, то функция eval просто возвращает результат; если же гене-
рируется ошибка, то функция обработки ошибок, указанная в строке
'catch', определяет ошибку, генерируемую строкой 'try', и выполняет
действия, которые позволяют избежать этой ошибки.
         Функция eval('try', 'catch') особенно полезна в связке с функ-
цией lasterr. Функция lasterr возвращает строку, содержащую по-
следнее сообщение об ошибке. Применяя функцию lasterr внутри
функции обработки ошибок, можно перехватить и проанализировать
сообщение об ошибке, сгенерированное выполняемой функцией.
         Пример. Следующая М-функция catch(A, B) для обработки
ошибок использует встроенную функцию lasterr, чтобы проверить
сообщение об ошибке, которая возникает из-за несогласованности
размеров операндов. Если возникает ошибка, то программа уменьша-
ет размеры одной из матриц:
           function C = catch(A, B)
           l = lasterr;
           j = findstr(l, 'Inner matrix dimensions');
           if (~isempty(j))
               [m, n] = size(A)
               [p, q] = size(B)
               if (n>p)
                A(:, p+1:n) = []
              else if (n < p)
                B(n+1:p, :) = []
              end
              C = A*B;
           else
              C = 0;
           end
         Использование функции eval с двумя аргументами, одним из
которых является функция catch, показано ниже:
          clear
          A = [1 2 3; 6 7 2; 0 1 5];
          B = [9 5 6; 0 4 9];
          eval('A*B','catch(A, B)')
          m= 3
          n= 3
          p= 2
                                                                      99