一组点和矢量场

时间:2016-10-22 13:40:46

标签: matlab vector matlab-figure matlab-guide

我有一组点在空间的某些坐标上显示速度矢量。我想要一个可视化我的数据集的矢量场图。你能告诉我怎么能在MATLAB中做到这一点吗?

1 个答案:

答案 0 :(得分:0)

假设它是二维测量,您可以首先在您测量的每个坐标处绘制一个点,并使用“scatter(x,y)”。我们很快就会看到,您将不会使用您的第一个和最后一个测量值,因此它应该是:

scatter(x(2:end-1), y(2:end-1))

接下来,您将需要每个向量的方向。如果你的测量频率足够高,数值导数应该给你正确的结果。 “diff(vec)”将返回相邻点之间差异的向量。所以你可以通过以下方式得到每个点的右侧导数:

dy = diff(y)
dx = diff(x)
% to be able to differentiate even when dx=0, will replace 0 with a very small number
for i=(dx == 0)
    dx(i) = eps
der = dy/dx

但是,您可能需要“平均”衍生物,您可以通过以下方式获得:

avg_der = (der(1:end-1) + der(2:end)) / 2

现在,您可以在绘制的每个点绘制一条线,使用dx = dx / normalization_size,dy = der * dx / normalization_size。可以绘制线条。

for i=1:length(avg_der)
    line([x(i+1) (x(i+1) + mean(dx(i:i+1))/NORMALIZATION)], [y(i+1) (y(i+1) + avg_der(i) * mean(dx(i:i+1))/NORMALIZATION)])