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