1

Рассмотрим следующий код

x = zeros(3,3);
eval(str3)
g = @(x) eval(str3)
g(x)
g(zeros(3,3))

MATLAB будет оценивать eval(str3) как положено , но будет жаловаться на то, что остальные два утверждают, что они являются Undefined function for input arguments of type 'double' . Зачем?

1 ответ1

0

Я могу понять, почему Matlab выдает ошибку. str3 не определен в вашем примере, но из вашего описания я могу сделать так, чтобы str3 был определен в вашем рабочем пространстве и содержал строку. В строке 3 вы создали функцию, независимую от x которая оценивает значение str3 до выполнения строки 3 каждый раз, когда вызывается g . Я думаю, что ваша строка 3 не отражает то, что вы хотели.

Я думаю, что вы пытаетесь сделать что-то вроде:

    g = @(x) eval(x);
    g('x = zeros(3,3)')

Но вы не описали, чего вы хотели достичь. Пожалуйста, предоставьте больше деталей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .