Вы не можете просто использовать что-то вроде plot(X+U, Y+V, 'o')
, потому что quiver
применяет автоматически вычисленной масштаб к U
и V
так, что все стрелки подходят хорошо на рисунке. Вы должны включить эту шкалу.
Глядя в код quiver
«s и тиражирования той части, которая вычисляет эту шкалу, вы можете выполнить следующие действия:
%// Example data
x = rand(1,20);
y = rand(1,20);
u = rand(1,20);
v = rand(1,20);
%// Taken from "quiver.m". Computes autoscale
if min(size(x))==1, n=sqrt(numel(x)); m=n; else [m,n]=size(x); end
delx = diff([min(x(:)) max(x(:))])/n;
dely = diff([min(y(:)) max(y(:))])/m;
del = delx.^2 + dely.^2;
if del>0
len = sqrt((u.^2 + v.^2)/del);
maxlen = max(len(:));
else
maxlen = 0;
end
if maxlen>0
autoscale = 0.9/maxlen;
else
autoscale = 0.9;
end
%// quiver plot
quiver(x, y, u, v)
hold on
%// plot marker at arrow tips, including computed autoscale
plot(x+autoscale*u, y+autoscale*v, 'o')
Если указать масштабный аргумент к quiver
, что аргумент является, что умножает фактор внутренне вычисленный масштаб. Таким образом, вы должны включать, что в plot
, а также:
%// quiver plot including manual scale factor
quiver(x, y, u, v, .5)
hold on
%// plot marker at arrow tips, including computed autoscale and manual scale
plot(x+.5*autoscale*u, y+.5*autoscale*v, 'o')
Если вы знаете X, Y происхождение точки и U, V отклонения, то вы знаете, конечные точки, то не вы? Затем просто запишите их с помощью 'plot (x, y, '.')' –
@AnderBiguri Но 'quiver' применяет масштаб к этим' U', 'V'. Вы должны включить эту шкалу, которая не известна априори –
@ LuisMendo, но у колчана есть опция ввода «масштаба»! –