Создание 3D-графика в Matlab с 2 изменяющимися переменными - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь создать 3D-сюжет в Matlab.

У меня очень длинная проблема, начиная с набора данных Y и Z. С большим количеством манипуляций все сводится к простой проблеме y / z

y=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
z=[5, 10, 15, 20, 25, 30, 35, 40, 45, 50];


x=(y_new)/(z_new)

Существует около 100 строк уравнений, управляющих y и z, чтобы стать двумя новыми переменными y_new и z_new. Я хотел бы создать 3D-график x, y, z. Я хотел бы получить значение x для (1,5) и (1,10), (2,5), (2,10) и т. Д.

У меня есть способ установки проблемы, использующий только y = 1 и z = 5. Последние несколько часов я пытался использовать циклы for или while, но я застреваю.

Если кто-то может мне помочь, я был бы признателен за время и усилия!

1 Ответ

1 голос
/ 14 марта 2012

Вам не нужно использовать цикл for. Вместо этого используйте встроенную функцию meshgrid(), которая предназначена именно для решения этой проблемы.

Вот учебник от abbe из MIT , в котором подробно описано, как создать трехмерный график функции f(x,y) с использованием meshgrid().

Процитирую рекламу:

3D-графика

Когда вы делаете трехмерный график, у вас обычно есть переменная z, которая является функцией обоих х и у. Когда вы хотите, чтобы х и у менялись в зависимости от некоторых диапазон, вам нужна матрица (а не вектор) для х и у, чтобы получить полный домен, который охватывает все различные комбинации этих х и значения y в некотором диапазоне. Функция с именем meshgrid установит х и у матрицы, как это для вас. Матрица х изменяет строки х вниз и сохраняет его постоянным в столбцах, а матрица у изменяет у в столбцы и сохраняет его постоянным по строкам, так что вы получите все комбинации х и у, если вы используете две матрицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...