Форум программистов, компьютерный форум, киберфорум
Наши страницы
Wolfram Mathematica
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
АлександрКом
371 / 290 / 131
Регистрация: 21.10.2012
Сообщений: 1,132
1

Аналог функции mesh из Matlab

29.03.2019, 12:06. Просмотров 930. Ответов 4
Метки нет (Все метки)

Здравствуйте. Есть матрица значений x, y, z. По отдельности могу их построить следующим образом:
Matlab M
1
2
3
ListPlot3D[x, Mesh -> None]
ListPlot3D[y, Mesh -> None]
ListPlot3D[z, Mesh -> None]
Получаются такие же графики, как если бы я писал в Matlab
Matlab M
1
2
3
mesh(x) 
mesh(y); 
mesh(z);
Теперь же стоит задача реализовать в Mathematica аналог следующей записи:
Matlab M
1
mesh(x,y,z)
Как можно это сделать? Ниже код полностью:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
t = Range[0, 4 Pi, Pi/100];
t = N[4 Cos[t]];
n = 20;
theta = N[Range[0, n]/n*2*Pi];
 
sintheta = Sin[theta];
x = ArrayReshape[t, {Length[t], 1}].  
   ArrayReshape[Cos[theta], {1, n + 1}];
y = ArrayReshape[t, {Length[t], 1}].  
   ArrayReshape[sintheta, {1, n + 1}];
z = ArrayReshape[
    Range[0, Length[t] - 1]/(Length[t] - 1), {Length[t], 
     1}].ArrayReshape[ConstantArray[1, Dimensions[t]], {1, n + 1}];
 
GraphicsGrid[{{ListPlot3D[x, Mesh -> None], 
   ListPlot3D[y, Mesh -> None]}, 
   {ListPlot3D[z, Mesh -> None], Graphics[Rectangle[]]}}]
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2019, 12:06
Ответы с готовыми решениями:

Аналог функции MATLAB exprnd(A,B,C) на С#
Есть код подобной функции ?

Реализовать аналог функции Magic (Matlab) на С++
Нужно переписать функцию MatLab которая называется magic на с++

Построение поверхности Matlab plot3, mesh, surfl , colormap, meshgrid, shading
z=sin(х)/(х2+у2+0.3) при х,у Î . вбиваю формулу выдаёт ошибку Добавлено через 5 минут >>...

Cisco Packet Tracer. Не справляюсь, Frame Relay (Mesh/Full Mesh),OSPF с областями
Имеется Облако Frame Relay, к облаку подключены 4 маршрутизатора фота ниже из каждого...

Поиск экстремума функции одной переменной с использованием языка MatLab и и встроенной функции fminbnd
помогите пожалуйста с лабой, или хотя бы подскажите что как использовать эти функции :( мапл только...

4
Mysterious Light
Эксперт по математике/физике
4095 / 2004 / 410
Регистрация: 19.07.2009
Сообщений: 3,024
Записей в блоге: 22
29.03.2019, 13:08 2
Вы бы расписали, что ожидаете увидеть, чтоб нам было легче помочь. Из документации matlab:
Цитата Сообщение от https://www.mathworks.com/help/matlab/ref/mesh.html
mesh(X,Y,Z) draws a wireframe mesh with color determined by Z, so color is proportional to surface height. If X and Y are vectors, length(X) = n and length(Y) = m, where [m,n] = size(Z). In this case, (X(j), Y(i), Z(i,j)) are the intersections of the wireframe grid lines; X and Y correspond to the columns and rows of Z, respectively. If X and Y are matrices, (X(i,j), Y(i,j), Z(i,j)) are the intersections of the wireframe grid lines. The values in X, Y, or Z can be numeric, datetime, duration, or categorical values.
Кажется, X и Y могут быть либо векторами (произвольных размеров), либо матрицами одного размера. Z должно быть матрицей того же размера, что X и Y, либо матрицей, размеры которого определяются длинами векторов X и Y.

У Вас в коде x и y, кажется (см. ниже), являются матрицами одного размера 401x21, тогда z тоже должно быть матрицей того же размера.

При этом, как говорится в приведённом фрагменте документации, цвет определяется Z.

У меня получилось так:
Matlab M
1
2
3
4
5
z = ArrayReshape[Range[0, Length[t] - 1]/(Length[t] - 1), {Length[t], 1}] .
 ConstantArray[1, {1, n + 1}]
 
ListPlot3D[Join @@ Transpose[{x, y, z}, {3, 1, 2}], 
 ColorFunction -> (Hue[#3] &), ColorFunctionScaling -> True]
Я изменил z, потому что не работало. Взял определение функции ArrayReshape с оф. документации Wolfram
Matlab M
1
ArrayReshape[list_, dims_] := Fold[Partition, Flatten[list], dims[[-1 ;; 2 ;; -1]]]
0
АлександрКом
371 / 290 / 131
Регистрация: 21.10.2012
Сообщений: 1,132
29.03.2019, 13:29  [ТС] 3
Mysterious Light, да, x,y и z - это матрицы 401х21. То, что хотелось получить на рис. (привожу в разных проекциях)
0
Миниатюры
Аналог функции mesh из Matlab   Аналог функции mesh из Matlab  
Mysterious Light
Эксперт по математике/физике
4095 / 2004 / 410
Регистрация: 19.07.2009
Сообщений: 3,024
Записей в блоге: 22
31.03.2019, 15:18 4
Лучший ответ Сообщение было отмечено АлександрКом как решение

Решение

Это самое близкое, что я смог придумать:
Matlab M
1
2
3
4
5
6
7
8
9
Slc[m_] := Join @@ Partition[m, {2, 2}, {1, 1}];
MeshPlot[x_, y_, z_] := 
  ListPlot3D[
   Join @@@ Transpose[{Slc[x], Slc[y], Slc[z]}, {4, 1, 2, 3}],
   Mesh -> None, 
   ColorFunction -> (Hue[#3] &), ColorFunctionScaling -> True, 
   BoundaryStyle -> None];
 
MeshPlot[x, y, z]
1
АлександрКом
371 / 290 / 131
Регистрация: 21.10.2012
Сообщений: 1,132
01.04.2019, 12:01  [ТС] 5
Mysterious Light, класс! Спасибо!
0
01.04.2019, 12:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2019, 12:01

Функции MatLab
Добрый день, Пожалуйста, помогите разобраться. Сделал простейшую функцию: function = f2( x )...

Аналог VB-функции Like
Есть ли в C++ аналог этой функции? Чтобы программа по заданному шаблону проверяла подобие строк....

Аналог функции в QT C++
Нужны аналоги функций. FindWindowEx; и SetWindowText; ПС: Это из винапи. а мне нужно чисто из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru