Вы можете начать с использования meshgrid для генерации двух массивов, которые соответствуют индексам вашего массива mxn (который мы для простоты будем называть z). Например:
[x,y] = meshgrid(1:size(z,2),1:size(z,1));
Проследите x и y в вашем командном окне, чтобы увидеть их структуру, это будет иметь смысл.
Тогда вы можете использовать функцию, такую как lsqnonlin (нелинейные наименьшие квадраты), чтобы подогнать 2d кривую к вашей матрице z. Так что, если вам нужна кривая «a log (x ^ 2) + b y», где a и b - свободные параметры, вы можете использовать что-то вроде этого:
%Define a function which returns the residual between your matrix and your fitted curve
myfun = @(params) params(1)*log(x(:).^2) + params(2)*y(:) - z(:)
%Define initial guesses for parameters a, b
params0 = [1,3];
%Add lots of debugging info
opts = optimset('Display','Iter');
%Fit
fitparams = lsqnonlin(myfun,params0,[],[],opts);