Как сделать куб в матлаб

Как построить трехмерную сетку (куб) в Matlab

Привет, я хотел бы построить прозрачную кубическую сетку с линиями в ней. Что-то вроде этого:

Однако мне удалось только нарисовать 2D-сетку:

Я использую Matlab R2009b.
Если это невозможно сделать в Matlab, вы можете порекомендовать мне программное обеспечение, которое я мог бы использовать.

Если вы не возражаете против нескольких циклов, что-то вроде этого будет работать:

Вам просто нужно сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения, чтобы выполнить это. Надеюсь, что это полезно.

Рассмотрим это векторное решение. Он имеет преимущество, что он создает один графический объект:

Более векторная версия ответа Стивена может быть следующей:

К сожалению, MATLAB в настоящее время не поддерживает прозрачные строки (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать «patch».

Я понимаю, что это поздний ответ, но он все еще действует, если кто-то еще смотрит на то, что делает то же самое.

Предполагая, что вы рисуете кубы (/их края), альтернатива уже предоставленным ответам — использовать код «plotcube» от Oliver:
plotcube

Преимущество этого решения состоит в том, что вы можете:

    Измените прозрачность граней (FaceAlpha) и/или,
    Измените прозрачность ребер (EdgeAlpha) и/или,
    Измените цвет линий (EdgeColor).

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

Чтобы добавить функциональные возможности от 2. и 3. (выше), измените раздел «cellfun (@patch. » в коде Olivers, добавив четыре дополнительные строки кода следующим образом: (замените целое cellfun раздел с этим, включая новые линии «EdgeAlpha» и «EdgeColor» ):

Важное замечание:
— для больших моделей (много кубов) это очень медленно запускать.
например запуская эту функцию «plotcube» в цикле «for» в MATLAB над тысячами блоков. Я считаю, что это от вызова функции «patch» несколько раз.
Лучшим решением было бы векторизация; сначала поместить все ваши точки (вершины/графы/все) в одну матрицу, а затем вызвать функцию @patch только один раз (цикл no ‘for’). Это потребовало бы изменения кода каким-либо образом для обновления всех данных XYZ.

Я надеюсь, что это поможет кому-то.

Вот код «plotcube» в случае, если ссылка на исходный код Оливера однажды сломается:

Источник

Как построить 3D сетку (куб) в Matlab

Привет, я хотел бы построить прозрачную сетку в форме куба с линиями внутри. Что-то вроде этого:

Однако мне удалось нарисовать только 2D сетку:

Использую Matlab R2009b. Если невозможно построить это в Matlab, не могли бы вы порекомендовать мне программное обеспечение, которое я мог бы использовать.

6 ответов

Если вы не возражаете против нескольких циклов for, сработает что-то вроде этого:

Вам просто нужно будет сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для этого. Надеюсь, что это поможет.

Вы можете сделать внутреннюю линию прозрачной, установив color = [0,65, 0,65, 0,65]. И вы можете использовать стиль пунктирной линии для внутренних линий и сплошных линий для границ, чтобы сделать его более похожим на трехмерный объект.

В моем программном пакете я кодирую функцию mesh3 для построения трехмерных сеток тензорного произведения.

Я понимаю, что это запоздалый ответ, но он все еще действителен на тот случай, если кто-то еще хочет сделать то же самое.

Предполагая, что вы рисуете кубы (/ их края), альтернативой уже предоставленным ответам является использование кода «plotcube» от Оливера: plotcube

Преимущество этого решения в том, что вы можете:

  1. Измените прозрачность граней (FaceAlpha) и / или,
  2. Измените прозрачность краев (EdgeAlpha) и / или
  3. Измените цвет линий (EdgeColor).

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

Чтобы добавить функциональность 2. и 3. (см. Выше), измените раздел ‘cellfun (@patch . ‘ в коде Оливерса, добавив четыре дополнительных строки кода следующим образом: (замените весь раздел cellfun с этим; включая новые строки EdgeAlpha и EdgeColor):

Дополнительную информацию о «патче» см. В документации по патчу.

Важное замечание: — для больших моделей (много кубиков) это очень медленно запускается. например запуск этой функции ‘plotcube’ в цикле ‘for’ в MATLAB над тысячами блоков. Я считаю, что это вызвано многократным вызовом функции «патч». Лучшим решением была бы векторизация; чтобы сначала объединить все ваши точки (вершины / грани / что угодно) в одну матрицу, а затем вызвать функцию @patch только один раз (без цикла for). Для этого потребуется как-то изменить код, чтобы обновить все данные XYZ.

Надеюсь, это кому-то поможет.

Вот код ‘plotcube’ на тот случай, если ссылка на исходный код Оливера когда-нибудь сломается:

Более векторизованная версия ответа Стивена может быть следующей:

К сожалению, MATLAB в настоящее время не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать «патч».

Рассмотрим это векторизованное решение. У него есть преимущество в том, что он создает единый графический объект:

Источник

How to Graph a Cube in MATLAB

Not every sample of data can be meaningfully plotted on a two-dimensional graph. MATLAB, a technical analysis software suite from MathWorks, allows you to plot publication-quality, three-dimensional plots of arbitrary data, useful in creating convincing presentations to customers or business partners. MATLAB contain several built-in functions to make plotting a cube — otherwise a daunting mathematical task — relatively simple. Essentially, you use the coordinates of each of the eight corners of the cube to plot six squares — one for each of face of the cube — and use the patch() function to patch the squares together into a solid shape.

Create a matrix containing the eight three-dimensional coordinates of the vertices of your cube.

my_vertices = [0 0 0; 0 1 0; 1 1 0; 1 0 0; 0 0 1; 0 1 1; 1 1 1; 1 0 1];

Create a matrix defining which four vertices will be linked to form the six faces of a cube. These numbers correspond to the order that the vertices appear in the «my_vertices» matrix.

my_faces = [1 2 3 4; 2 6 7 3; 4 3 7 8; 1 5 8 4; 1 2 6 5; 5 6 7 8];

Graph the cube using the patch() function that forms linked polygons. This plots into the currently selected figure or, if none is available, opens a new figure. Note the use of single and not double quotes in the command.

patch(‘Vertices’, my_vertices, ‘Faces’, my_faces, ‘FaceColor’, ‘g’);

Источник

Как построить 3D сетку (куб) в Matlab

Привет я хотел бы построить прозрачную кубовидную сетку с линиями в нем. Что-то вроде этого:

Однако мне удалось нарисовать только 2D-сетку:

Я использую Matlab R2009b. Если это невозможно изобразить в Matlab, не могли бы вы порекомендовать мне программу, которую я мог бы использовать.

6 ответов

Если вы не возражаете против нескольких циклов, что-то вроде этого будет работать:

Вам просто нужно сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для достижения этой цели. Надеюсь, что это полезно.

Рассмотрим это векторизованное решение. Преимущество в том, что он создает один графический объект:

Более векторизованная версия ответа Стивена может быть следующей:

К сожалению, в настоящее время MATLAB не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать ‘patch’.

Я понимаю, что это запоздалый ответ, но он все еще действителен, если кто-то еще пытается сделать то же самое.

Предполагая, что вы строите кубы (/ их ребра), альтернативой уже предоставленным ответам является использование кода plotcube от Оливера: plotcube.

Преимущество этого решения в том, что вы можете:

  1. Изменить прозрачность граней (FaceAlpha) и / или
  2. Изменить прозрачность краев (EdgeAlpha) и / или,
  3. Изменить цвет линий (EdgeColor).

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

Чтобы добавить функциональность 2. и 3. (выше), измените раздел ‘cellfun(@patch. ‘) в коде Оливера, добавив в четыре дополнительные строки кода: (заменить целое cellfun раздел с этим; включая новые строки ‘EdgeAlpha’ и ‘EdgeColor’):

Для получения дополнительной информации о ‘patch’, пожалуйста, смотрите документацию к патчу.

Важное примечание: — для больших моделей (много кубов) запуск выполняется очень медленно. например, запуск этой функции plotcube в цикле for в MATLAB для тысяч блоков. Я считаю, что это вызвано многократным вызовом функции ‘patch’. Лучшим решением будет векторизация; сначала собрать все свои точки (вершины / грани / что угодно) в одну матрицу, а затем вызывать функцию @patch только один раз (без цикла for). Для этого потребуется как-то изменить код, чтобы обновить все данные XYZ.

Я надеюсь, что это помогает кому-то.

Вот код ‘plotcube’ в случае, если ссылка на оригинальный код, сделанная Оливером, когда-нибудь прекратится:

Источник

Creating 3-D Plots

This example shows how to create a variety of 3-D plots in MATLAB®.

Mesh Plot

The mesh function creates a wireframe mesh. By default, the color of the mesh is proportional to the surface height.

Surface Plot

The surf function is used to create a 3-D surface plot.

Surface Plot (with Shading)

The surfl function creates a surface plot with colormap-based lighting. For smoother color transitions, use a colormap with linear intensity variation such as pink .

Contour Plot

The contour function is used to create a plot with contour lines of constant value.

Quiver Plot

The quiver function plots 2-D vectors as arrows.

Slices through 3-D Volumes

The slice function displays data at planes that slice through volumetric data.

Open Example

You have a modified version of this example. Do you want to open this example with your edits?

MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

Источник

Как сделать куб в матлаб

Построение графиков точками и отрезками прямых

Графики в логарифмическоми полулогарифмическом масштабе

Графики специальных типов

Создание массивов данных для трехмерной графики

Построение графиков трехмерных поверхностей, сечений и контуров

Средства управления подсветкой и обзором фигур

Средства оформления графиков

Одновременный вывод нескольких графиков

Управление цветовой палитрой

Окраска трехмерных поверхностей

Двумерные и трехмерные графические объекты

Одно из достоинств системы MATLAB — обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI). Особое внимание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов.

Описанию графических функций и команд посвящена обширная электронная книга в формате PDF. Объем материала по графике настолько велик, что помимо вводного описания графики в уроке 3 в этой книге даются еще два урока по средствам обычной и специальной графики. Они намеренно предшествуют систематизированному описанию большинства функций системы MATLAB, поскольку графическая визуализация вычислений довольно широко используется в последующих материалах книги. При этом графические средства системы доступны как в командном режиме вычислений, так и в программах. Этот урок рекомендуется изучать выборочно или выделить на него не менее 4 часов.

Построение графиков отрезками прямых

Функции одной переменной у(х) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси — горизонтальная X и вертикальная Y, и задаются координаты х и у, определяющие узловые точки функции у(х). Эти точки соединяются друг с другом отрезками прямых, т. е. при построении графика осуществляется линейная интерполяция для промежуточных точек. Поскольку MATLAB — матричная система, совокупность точек у(х) задается векторами X и Y одинакового размера.

Команда plot служит для построения графиков функций в декартовой системе координат. Эта команда имеет ряд параметров, рассматриваемых ниже.

plot (X, Y) — строит график функции у(х), координаты точек (х, у) которой берутся из векторов одинакового размера Y и X. Если X или Y — матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.

Приведенный ниже пример иллюстрирует построение графиков двух функций — sin(x) и cos(x), значения функции которых содержатся в матрице Y, а значения аргумента х хранятся в векторе X:

На рис. 6.1 показан график функций из этого примера. В данном случае отчетливо видно, что график состоит из отрезков, и если вам нужно, чтобы отображаемая функция имела вид гладкой кривой, необходимо увеличить количество узловых точек. Расположение их может быть произвольным.

Рис. 6.1. Графики двух функций в декартовой системе координат

plot(Y) — строит график у(г), где значения у берутся из вектора Y, a i представляет собой индекс соответствующего элемента. Если Y содержит комплексные элементы, то выполняется команда plot (real (Y). imag(Y)). Во всех других случаях мнимая часть данных игнорируется.

Вот пример использования команды plot(Y):

Соответствующий график показан на рис. 6.2.

Рис. 6.2. График функции, представляющей вектор Y с комплексными элементами

plot(X.Y.S) — аналогична команде plot(X.Y), но тип линии графика можно задавать с помощью строковой константы S.

Значениями константы S могут быть следующие символы.

Источник

Оцените статью
Юридический портал
Adblock
detector