Matlab fplot не хватает входных аргументов - PullRequest
0 голосов
/ 03 сентября 2018

Я только начинаю изучать Matlab и много раз искал решение.

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

fplot(@(x) myfunc);

function y = myfunc(x)
    y = (x^3) - (4 .* x^2) - 1
end

выдает эту ошибку

Warning: Function behaves unexpectedly on array inputs. To improve performance,
properly vectorize your function to return an output with the same size and shape as
the input arguments. 
> In matlab.graphics.function.FunctionLine>getFunction
  In matlab.graphics.function.FunctionLine/updateFunction
  In matlab.graphics.function.FunctionLine/set.Function_I
  In matlab.graphics.function.FunctionLine/set.Function
  In matlab.graphics.function.FunctionLine
  In fplot>singleFplot (line 234)
  In fplot>@(f)singleFplot(cax,{f},limits,extraOpts,args) (line 193)
  In fplot>vectorizeFplot (line 193)
  In fplot (line 163)
  In HWA1_2 (line 1) 
Warning: Error updating FunctionLine.

 The following error was reported evaluating the function in FunctionLine update: Not
 enough input arguments.

Это работает, когда я просто использую fplot самостоятельно.

fplot((x^3)-(4*x^2)-1)

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

1 Ответ

0 голосов
/ 03 сентября 2018

Ваш синтаксис для вызова fplot - это проблема, а не ваша функция. Если вы передаете простой дескриптор функции, просто используйте:

fplot(@myfunc)

Синтаксис, который вы использовали, заключается в том, как создать анонимную функцию , но вы забыли включить x в уравнение. Вы также можете написать это так и получить тот же результат:

fplot(@(x) myfunc(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...