Векторные объемные данные содержат больше информации, чем скалярные данные, потому что каждая координатная точка в наборе данных имеет три значения, связанных с ним. Эти значения определяют вектор, который представляет и величину, и направление. Скорость потока жидкости является примером вектора данных.
Для визуализации векторных данных полезен ряд методов:
Линии потока прослеживают путь, по которому будет следовать безмассовая частица, погруженная в векторное поле.
Частицы потока являются маркерами, которые отслеживают линии потока и полезны для создания линейной анимации потока.
Струйные ленты аналогичны струйным линиям, за исключением того, что ширина лент позволяет им указывать на скручивание. Ленты потока полезны, чтобы указать скорость вращения поворота.
Струйные трубы аналогичны струйным линиям, но вы также можете управлять шириной трубы. Потоковые трубки полезны для отображения расхождения векторного поля.
Графики конуса представляют величину и направление данных в каждой точке путем отображения конической стрелки или стрелы.
Обычно эти функции лучше всего объясняют данные при использовании в сочетании с другими методами визуализации, такими как контуры, плоскости разбиения и изоповерхностей. Примеры в этом разделе иллюстрируют некоторые из этих методов.
Методы визуализации, такие как срезы контура, плоскости разбиения и изоповерхности, требуют скалярных объемных данных. Можно использовать эти методы с векторными данными, взяв величину векторов. Для примера, wind
набор данных возвращает три массива координат и три массива векторных компонентов, u
, v
, w
. В этом случае величина векторов скорости равняется скорости ветра в каждой соответствующей координатной точке объема.
wind_speed = sqrt(u.^2 + v.^2 + w.^2);
Область массива wind_speed
содержит скалярные значения для объемных данных. Полезность информации, полученной этим подходом, однако, зависит от того, какое физическое явление представлено величиной ваших векторных данных.
Потоковые графики (линии потока, ленты, трубы и конусы или стрелы) иллюстрируют поток векторного поля 3-D. MATLAB® функции построения графиков потоков (streamline
, streamribbon
, streamtube
, coneplot
, stream2
, stream3
) все требуют, чтобы вы указали точку, в которой вы хотите начать трассировку каждого потока.
Как правило, знание характеристик ваших данных помогает вам выбрать начальные точки. Информация, такая как основное направление потока и область значений координат данных, помогает вам решить, где оценить данные.
streamslice
функция полезна для исследования ваших данных. Для примера эти операторы рисуют срез через векторное поле с z значением посередине в диапазоне.
load wind zmax = max(z(:)); zmin = min(z(:)); streamslice(x,y,z,u,v,w,[],[],(zmax-zmin)/2)
Этот график среза потока указывает, что поток находится в положительном направлении x, а также позволяет вам выбирать начальные точки как в x, так и в y. Можно создать аналогичные графики, которые срезают объем в плоскости x-z или плоскости y-z, чтобы получить дальнейшее представление о области значений и ориентации данных.
Чтобы задать начальную точку для одной линии потока, вам нужны координаты x -, y - и z точки. meshgrid
команда предоставляет удобный способ создания массивов начальных точек. Для примера можно выбрать следующие начальные точки из данных о ветре, показанных на предыдущем срезе потока.
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
Этот оператор определяет начальные точки как все лежащие на x = 80, y в диапазоне от 20 до 50 и z в диапазоне от 0 до 15. Вы можете использовать plot3
отображение расположений.
plot3(sx(:),sy(:),sz(:),'*r'); axis(volumebounds(x,y,z,u,v,w)) grid on set(gca,'BoxStyle','full','Box','on') daspect([2 2 1])
Вам не нужно использовать трехмерные массивы, такие как возвращенные meshgrid
, но размер каждого массива должен быть одинаковым, и meshgrid
предоставляет удобный способ сгенерировать массивы, если у вас нет равного количества уникальных значений в каждой координате. Можно также задать массивы начальных точек следующим векторы-столбцы. Для примера, meshgrid
возвращает трехмерные массивы:
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15); whos
Name Size Bytes Class Attributes sx 4x1x4 128 double sy 4x1x4 128 double sz 4x1x4 128 double
В сложение можно использовать векторы-столбцы 16 на 1 с соответствующими элементами трех массивов, составляющими координаты каждой начальной точки. (Это эквивалент индексации значений, возвращаемых meshgrid
как sx(:)
, sy(:)
, и sz(:)
.)
Для примера добавление струйных линий к начальным точкам приводит к:
streamline(x,y,z,u,v,w,sx(:),sy(:),sz(:))
subvolume
функция предоставляет простой способ доступа к субрегионам набора объемных данных. subvolume
позволяет вам выбирать необходимые области на основе пределов, а не использовать оператор двоеточия для индекса в трехмерные массивы, которые определяют тома. Рассмотрим следующие два подхода к созданию данных для подвойства - индексация с оператором двоеточия и использование subvolume
.
Когда вы индексируете массивы, вы работаете со значениями, которые задают элементы в каждой размерности массива.
load wind xsub = x(1:10,20:30,1:7); ysub = y(1:10,20:30,1:7); zsub = z(1:10,20:30,1:7); usub = u(1:10,20:30,1:7); vsub = v(1:10,20:30,1:7); wsub = w(1:10,20:30,1:7);
subvolume
позволяет использовать значения координат, которые можно считать из осей. Для примера:
lims = [100.64 116.67 17.25 28.75 -0.02 6.86]; [xsub,ysub,zsub,usub,vsub,wsub] = subvolume(x,y,z,u,v,w,lims);
Затем можно использовать данные подвоспитания как входы для любой функции, требующей векторных объемных данных.