Векторные данные объема содержат больше информации, чем скалярные данные, потому что каждая координатная точка в наборе данных имеет три значения, сопоставленные с нею. Эти значения задают вектор, который представляет и значение и направление. Скорость потока жидкости является примером векторных данных.
Много методов полезны для визуализации векторных данных:
Линии потоков прослеживают путь, за которым следовала бы невесомая частица, погруженная в векторное поле.
Потоковые частицы являются маркерами, которые прослеживают линии потоков и полезны для создания анимаций линии потоков.
Потоковые ленты подобны линиям потоков, за исключением того, что ширина лент позволяет им указать на скручивание. Потоковые ленты полезны, чтобы указать на вихревую угловую скорость.
Потоковые трубы подобны линиям потоков, но можно также управлять шириной трубы. Потоковые трубы полезны для отображения расхождения векторного поля.
Конические графики представляют значение и направление данных в каждой точке путем отображения конического наконечника стрелки или стрелки.
Обычно имеет место, что эти функции лучше всего объясняют данные, когда используется в сочетании с другими методами визуализации, такими как контуры, плоскости разбиения и изоповерхности. Примеры в этом разделе иллюстрируют некоторые из этих методов.
Методы визуализации, такие как срезы контура, плоскости разбиения и изоповерхности требуют скалярных данных объема. Можно использовать эти методы с векторными данными путем взятия значения векторов. Например, набор данных 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);
Можно затем использовать данные подобъема в качестве входных параметров к любой функции, требующей векторных данных объема.