Поменяйте местами оси Y и Z на 3D-графике изоповерхности
Последние несколько дней у меня возникают проблемы при попытке поменять оси Y и Z на трехмерном изоповерхностном графике. Я хочу поменять местами оси Y и Z, чтобы визуализировать это и иметь возможность обсуждать результат более четко. Я помню, что в прошлом я менял оси Y и Z двумя способами:
1) с помощью ручки оси:
yy = get(gca, 'YData');
zz = get(gca, 'Zdata');
set(gca, 'YData', zz, 'ZData', yy);
Ошибка, с которой я сталкиваюсь, заключается в следующем: "В классе" оси "нет свойства Ydata".
2) поменять местами, переключив данные в isosurface-команде:
isosurface (X, Z, Y, calulated_rotor, iso_value) Я получаю следующую ошибку: "X, Y и Z должны быть матрицами, созданными MESHGRID".
Однако X,Y,Z генерируются с использованием сетки. Я попытался решить эту ошибку:
[X Z Y] = meshgrid(x, z, y) % instead of [X Y Z] = meshgrid(x, z, y)
% recalculate the velocity matrices VX, VY, VZ: 3D-matrices , code not provided
calculated_rotor_2 = rotor(X, Z, Y, VX, VZ, VY) % instead of calculated_rotor = rotor(X,Y,Z, VX, VY, VZ)
isosurface(X, Z, Y, calculated_rotor_2, iso_value) % instead of isosurface(X, Y, Z, calculated_rotor, iso_value)
Однако это показывает не повернутую версию первого ротора, который я вычислил. Он отображает неверно рассчитанный ротор. Таким образом, мой главный вопрос остается: как правильно поменять оси Y и Z?
Моя версия Matlab - R2010a.
1 ответ
'YData'
Свойство принадлежит Surfaceplot, а не Axes, поэтому вы получаете ошибку. Дескриптор этого Surfaceplot возвращается mesh()
например, вызов (пожалуйста, проверьте документ вашей функции печати). Вы также можете запросить 'Children'
собственность вашего gca
получить эту ручку (если gca
на самом деле это ручка оси, которая удерживает поверхность).
Для rotor
позвони... это керл? Если да, вы должны знать, что изменение относительной ориентации вашей системы отсчета (например, замена осей Y и Z) мешает направлению Curl вашего векторного поля; ну, это портит само поле вектора...