Матлаб - как построить трехмерный график пользовательской функции

Идея построения графика пользовательской функции (трёхмерного) , возвращающей для пары переданных значений только одно значение в качестве результата (скалярное значение) может быть проиллюстрирована следующим кодом:

[X,Y] = meshgrid(1:1:32, 0:0.01:1); % значения аргументов X и Y  

% далее строим матрицу значений функции на основе
% матриц значений X и Y
for x = 1:101
  for y = 1:32
    Z(x,y) = ppscq(X(x,y), Y(x,y));
  end
end

surf(X,Y,Z);

ppscq() - это как раз и есть некая пользовательская функция.

Разберёмся подробнее - чтобы использовать саму функцию surf - рисующую наш график, необходимо получить три матрицы одинаковой размерности - две из них - матрицы входных значений - мы получаем используя команду:

[X,Y] = meshgrid(1:1:32, 0:0.01:1); 

при этом - если смотреть с практической точки зрения - то здесь мы хотим отследить изменения нашей пользовательской функции (в дальнейшем) при изменении аргумента X от 1 до 32 с шагом 1 , а Y - от 0 до 1 с шагом 0.01 (то есть - прибавляя по одной сотой)
Далее мы "вручную" (самостоятельно написав два вложенных цикла) самостоятельно заполняем матрицу Z - которая будет играть роль "высоты" на трёхмерном графике =

for x = 1:101
  for y = 1:32
    Z(x,y) = ppscq(X(x,y), Y(x,y));
  end
end

здесь важно отследить, чтобы изменения x и y - счётчиков циклов - соответствовали размерности матрицы X и Y, которые мы получили с помощью meshgrid() ранее.

Когда все три матрицы одинаковой размерности построены мы можем вызвать команду построения графика:

surf(X,Y,Z);

В результате наш код будет выглядеть так:

figure

[X,Y] = meshgrid(1:1:32, 0:0.01:1); % значения аргументов X и Y  

% далее строим матрицу значений функции на основе
% матриц значений X и Y
for x = 1:101
  for y = 1:32
    Z(x,y) = ppscq(X(x,y), Y(x,y));
  end
end

surf(X,Y,Z);