我强烈怀疑这里的问题是数据,而不是可视化技术.但总的来说,问题是以下一个或多个问题:
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
在显示原始数据的第一个图中,噪声看起来并不坏,但是当我们查看衍生估计时!哎呀…噪音确实被放大了.因此,请忘记流的高阶特性,例如卷曲和涡度,这需要数据的梯度.
那么在这样的情况下我们能做些什么呢?基本上,只需查看原始数据.如果有一个模式,它将揭示自己.例如,让我们从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])
唯一看起来有点结构化的是最后一个情节.然而,该情节告诉我们,我们可能还有湍流(除了噪音)以应对.
具体来说,从视图3来看,您肯定会在紧紧拥抱物体的流中进行速度测量.在这种情况下,您的测量结果可能太紧了……而且可能在边界层.如果是这种情况(测量位于边界层中),那么您可以在流中获得时变效果,这意味着在没有时间组件的情况下查看任何内容都没有意义.你的答案中的“漂亮”情节只有当流动是层流时才真正有用,我们可以看到这些漂亮,一致的流线.如果它是湍流,那么无论你多么努力,流动中都没有可辨别的模式.
总而言之,我不认为您能够为您的数据找到一个很好的可视化,因为您使用的传感器太嘈杂,或者流动太紊乱.
暂时……考虑一下当我们从“好”数据集中查看原始速度向量时会发生什么:
那个,我的朋友,是一个训练有素的家养宠物.你手上有一只野山狮.