【发布时间】:2016-10-22 13:40:46
【问题描述】:
我有一组点,它们在某些空间坐标上显示速度矢量。我想要可视化我的数据集的向量场图。你能告诉我如何在 MATLAB 中做到这一点吗?
【问题讨论】:
标签: matlab vector matlab-figure matlab-guide
我有一组点,它们在某些空间坐标上显示速度矢量。我想要可视化我的数据集的向量场图。你能告诉我如何在 MATLAB 中做到这一点吗?
【问题讨论】:
标签: matlab vector matlab-figure matlab-guide
假设它是二维测量,您可以首先在您测量的每个坐标处绘制一个点,使用“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)])
【讨论】: