Матлаб - как построить трехмерный график пользовательской функции
Primary tabs
Forums:
Идея построения графика пользовательской функции (трёхмерного) , возвращающей для пары переданных значений только одно значение в качестве результата (скалярное значение) может быть проиллюстрирована следующим кодом:
[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);
- Log in to post comments
- 10241 reads