2017-01-31 9 views
5

Я пытаюсь использовать методы лучшей практики в области Computational fluid dynamics для анализа и визуализации velocity field.Как анализировать и визуализировать поле 3D-скорости?

Данные 6 позиций и скоростей движущихся частиц: x,y,z и vx,vy,vz соответственно.

Я хочу, чтобы визуализировать и рассчитать индуцированное поле скоростей и его свойства, такие как: curl, divergence, isosurfaces и т.д.

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

В конечном счете, одна из вещей, о которых я не уверен, заключается в том, как мудро создать сетку сетки из моих 50 точек в пространстве, а вторая - использовать подходы CFD для визуализации поля скорости независимо от небольшого количества данных точки.

close all 
rng default 
t=0.1:0.1:10; 
x = sin(t)'; 
y = cos(t)'; 
z = t.^0.2'; 
vx=y;vy=x;vz=z; 

figure 
subplot(2,3,1); 
quiver3(x,y,z,vx,vy,vz); 
hold on 
streamribbon({ [x y z] }, {vx},{vy},{vz}); 

subplot(2,3,2); 
[curl_val, cav] = curl([x,y,z],[vx,vy,vz]); 
surfc([x,y,z],cav); 
subplot(2,3,3); 
surfc([x,y,z],curl_val); 

w = sqrt(vx.^2 + vy.^2 + vz.^2); 
subplot(2,3,4); 
quiver3(x,y,z,vx,vy,vz); 
streamtube({ [x y z] }, {w}); 

subplot(2,3,5); 
quiver3(x,y,z,vx,vy,vz); 

subplot(2,3,6); 
surfc([x,y,z],[vx,vy,vz]); 

enter image description here

Когда я запускаю выше сценарий (за исключением генерации данных) на real data, я получаю следующие участки, которые не являются очень информативными:

enter image description here

+0

Пожалуйста, постарайтесь, чтобы ваши изменения были существенными. Если вы делаете много мелких изменений, чтобы привлечь внимание к своему вопросу, не делайте этого. – Undo

+0

@Undo, я делаю изменения, поэтому я получу качественный ответ и избегаю ответов низкого качества, которые не затрагивают ни одной из моих основных проблем: как построить данные, как показать завихрение, как сделать график выглядит хорошо. – 0x90

+1

Не могли бы вы добавить график ваших данных, а не только идеальные данные. Я думаю, это поможет читателям понять, почему традиционные сюжеты ломаются. –

ответ

10

I сильно подозревают, что проблема здесь связана с данными, а не с технологией визуализации. Но в целом, проблема одна или несколько из следующих действий:

1) У вас нет достаточно данных, чтобы захватить основные динамики (динамика в пространстве работает на более высокую пространственную частоте, чем вы отобранные)

2) Данные слишком зашумлены для количества собранных данных.

3) Поток в основном турбулентный, и, следовательно, надеясь на хороший ламинарноподобный сюжет не произойдет.

Если у вас возникли проблемы с визуализацией данных, первое эмпирическое правило всегда должно отбрасывать любую визуализацию, которая пытается каким-либо образом аппроксимировать производную (или градиент). Причина в том, что, когда вы пытаетесь аппроксимировать производную реальными данными, шум почти всегда делает эту оценку бессмысленной. Например, давайте предположим, что у нас есть косинус, который получает поврежден какой-то шум, и мы пытаемся численно оценить производную от данных

figure 
% Create a signal 
dt = .1; 
t = 0:.1:10; 
x = cos(t); 

% Add some noise 
y = x + .5 * randn(size(x)); 

% Compute the first order approximation of the derivatives of the signals 
dx = diff(x)/dt; 
dy = diff(y)/dt; 

% Plot everything 
subplot(2,1,1) 
plot(t,x,t,y) 
axis tight 
subplot(2,1,2) 
plot(t(2:end),dx,t(2:end),dy) 
axis tight 

enter image description here

В первом участке, который показывает исходные данные, шум не выглядит плохим, но когда мы смотрим на производную оценку! Ой ... Шум действительно усиливается. Поэтому забудьте о свойствах более высокого порядка потока, таких как завиток и завихренность, которые требуют градиентов данных.

Итак, что мы можем сделать в таких случаях? По сути, просто посмотрите на необработанные данные. Если есть образец, он проявит себя.Например, давайте посмотрим на ваши сырья векторов скорости от 3-х различных точек зрения:

data = dlmread('data.csv','\s') 
x = data(:,1); 
y = data(:,2); 
z = data(:,3); 
vx = data(:,4); 
vy = data(:,5); 
vz = data(:,6); 

close all 
figure 
subplot(1,3,1); 
quiver3(x,y,z,vx,vy,vz); 
view([1,0,0]) 
subplot(1,3,2); 
quiver3(x,y,z,vx,vy,vz); 
view([0,1,0]) 
subplot(1,3,3); 
quiver3(x,y,z,vx,vy,vz); 
view([0,0,1]) 

enter image description here

Единственное, что выглядит даже немного структурировано, что последний участок. Однако этот сюжет говорит нам, что мы, вероятно, также испытываем турбулентность (в дополнение к шуму), с которой можно бороться.

В частности, из вида 3, похоже, вы делаете измерения скорости в потоке, который плотно обнимает объект. В этом случае ваши измерения, вероятно, слишком плотные, хотя ... и, вероятно, в пограничном слое. Если это так (измерения находятся в пограничном слое), то вы можете получать изменяющиеся во времени эффекты в потоке, а это значит, что нет смысла смотреть на что угодно, не имея также компонент времени. «Хорошие» сюжеты, которые у вас есть в вашем ответе, действительно очень полезны, когда поток ламинарный, где мы видим эти приятные последовательные линии потока. Если это турбулентно, то в потоке нет заметной картины, независимо от того, как сильно вы выглядите.

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

Как и в стороне ... что происходит, когда мы смотрим на сырье векторов скорости из ваших «хороших» набора данных:

enter image description here

Это, мой друг, хорошо обученный дом животное. У тебя на руках дикий горный лев.

+0

Спасибо, не могли бы вы обратиться к вопросу о визуализации? – 0x90

+0

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

+0

Пожалуйста, проигнорируйте плохие данные, у меня есть тысячи других наборов данных, придерживайтесь идеальных данных о игрушке. Как вы визуализируете его завихренность, расхождение, завиток лучше? Этот пост должен использоваться и другими людьми.Ваши шумовые объяснения хороши для людей, чтобы понять, как их данные являются шумными, но для части визуализации я бы использовал идеальное обученное домашнее животное, как вы его назвали. Thx – 0x90