Набор точек и векторное поле

#matlab #vector #matlab-figure #matlab-guide

#matlab #вектор #matlab-рисунок #matlab-руководство

Вопрос:

У меня есть набор точек, которые отображают векторы скорости в некоторых координатах пространства. Я хочу иметь график векторного поля, который визуализирует мои наборы данных. Можете ли вы сказать мне, как я могу это сделать в MATLAB?

Ответ №1:

Предполагая, что это двумерные измерения, вы можете начать с построения точки в каждой измеренной вами координате с «разбросом (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)])