Когда вы передаете функции Matlab матрицу, она не проходит и не оценивает ее по точкам. Он использует всю матрицу в качестве входных данных. Для некоторых функций этот результат может быть одинаковым, например:
function f = y2(x)
f = y.^2;
end
Произведет y ^ 2 для однозначного ввода или, если вы введете вектор, скажем, y = [1, 2, 3], вы получите однозначные выходные данные функции [1, 4, 9], но только потому, что функция была написана таким образом. В качестве альтернативы, если ваша функция была написана:
function f = y2(x)
f = y^2;
end
Вы получите тот же результат для однозначных входных данных, однако, если вы введете вектор, он попытается выполнить умножение матриц и, таким образом, выдаст ошибку, если y не является квадратным.
Вам нужно переписать вашу функцию, чтобы она производила поэлементную оценку, которую вы хотите. Наивный способ сделать это - определить другую функцию:
function fvec = Mvec(...)
[n k] = size(t)
fvec = zeros(n,k)
for i=1:n
for j = 1:k
fvec(i,j) = M(t(i,j),...)
end
end
end
Это сработает, но обычно считается плохим кодом Matlab, потому что, если он написан правильно, вы сможете заменить те, которые вложены в циклы, матричными операциями.