Я определил функцию, которая возвращает производную от символьного выражения или дескриптора функции (плюс еще несколько).Производная Matlab возвращает константу
function df = der(f)
if isa(f, 'cfit') || isa(f, 'sfit')
df = @(x) differentiate(f, x);
elseif isa(f, 'sym') || isa(f, 'function_handle')
syms r
F = sym(f);
df = matlabFunction(diff(F), 'Vars', r);
else
error('Not a derivative of a known type')
end
end
Это хорошо работает, но когда я питаюсь в строке, я получаю то, что не создает массивы.
>> df = der(@(r) r)
df =
@(r)1.0
>> df([1,2,3])
ans =
1
Есть в любом случае, чтобы поймать ли выходная функция является постоянным и изменить выход, так что поведение,
>> df = der(@(r) r)
df =
@(r)1.0*ones(size(r))
>> df([1,2,3])
ans =
1 1 1
Привет! Я сделал чат-комнату MATLAB для нас, если вы хотите обсудить что-либо, связанное с MATLAB, которое находится вне темы, или если вы хотите обсудить вопросы, которые занимают больше времени, чем блок комментариев. Остановитесь, когда у вас будет время! http://chat.stackoverflow.com/rooms/81987/matlab – rayryeng