Как построить куб в матлаб

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

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

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

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

6 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

How to plot 3D grid (cube) in Matlab

Hi I would like to plot transparent cube-shaped grid with lines in it. Something like this:

However, I managed only to draw a 2D grid:

I use Matlab R2009b. If it is impossible to plot this in matlab could you recommend me a software I could use.

6 Answers 6

Consider this vectorized solution. It has the advantage that it creates a single graphic object:

If you don’t mind a few for loops, something like this will work:

You will just need to make the grid transparent by probably changing line properties, I don’t think you can change alpha values to accomplish this. Hope that is helpful.

A more vectorized version of Stephen’s answer might be the following:

Читайте также:  в чем заключается преимущество технологии умный диалоговый код для автовладельцев

Unfortunately, MATLAB does not currently support transparent lines (to my knowledge). If you really need them to be transparent I’d suggest using ‘patch’.

I understand this is a late reply but it is still valid in case anyone else is looking at doing the same thing.

Assuming you are plotting cubes (/their edges), an alternative to the answers already provided is to use the ‘plotcube’ code from Oliver: plotcube

The advantage of this solution is that you can:

All of these can be constants, or variables. (e.g. fixed edge colour, or a colour that changes with Z-value etc.)

To add in functionality of 2. and 3. (above) change the ‘cellfun(@patch. ‘ section in Olivers code, adding in the four extra lines of code as follows: (replace the whole cellfun section with this; including the new ‘EdgeAlpha’ and ‘EdgeColor’ lines):

For more info on ‘patch’ please see patch documentation.

I hope that helps someone.

Here is the ‘plotcube’ code in case the link to the original code by Oliver breaks someday:

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  smart fortwo панорамная крыша

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

Источник

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

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

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

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

6 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Как построить куб в матлаб

Обычная графика MATLAB

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

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

Гистограммы и диаграммы

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

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

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

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

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

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

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

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

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

Одно из достоинств системы 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 могут быть следующие символы.

Источник

Обучающий онлайн портал