2017-02-26 73 views
0

我有4个载体,第一个三位是复数,第四个是它们的总和。matlab中的着色颤动矢量

我用箭头成功绘制了它们,但是,我需要将第四个颜色作为红色着色。我怎样才能使第四个颜色变红?

% vectors I want to plot as rows (XSTART, YSTART) (XDIR, YDIR) 
rays = [ 
    0 0 real(X1) imag(X1) ; 
    0 0 real(X2) imag(X2) ; 
    0 0 real(X3) imag(X3) ; 
    0 0 real(SUM) imag(SUM) ; 
] ; 

% quiver plot 
quiver(rays(:,1), rays(:,2), rays(:,3), rays(:,4)); 

% set interval 
axis([-30 30 -30 30]); 

或者我应该使用plotv吗? https://www.mathworks.com/help/nnet/ref/plotv.html

回答

1

handle返回quiver函数不允许访问每个单个元素,以便更改其属性,在这种情况下,颜色。

一个可能的解决办法,虽然不完全是优雅的,可能是:

  • 情节颤动整个数据集的
  • 从轴取出的uvxy数据元素你想改变颜色
  • 设置hold on
  • 情节再次quiver对整个数据集
  • 从轴取出uv,元素的xy数据,你不想改变颜色
  • 所需的颜色设置为remainig项目

一可能实施方案提出的方法可能是:

% Generate some data 
rays = [ 
    0 0 rand-0.5 rand-0.5 ; 
    0 0 rand-0.5 rand-0.5 ; 
    0 0 rand-0.5 rand-0.5 ; 
] ; 
rays(4,:)=sum(rays) 

% Plot the quiver for the whole matrix (to be used to check the results 
figure 
h_orig=quiver(rays(:,1), rays(:,2), rays(:,3), rays(:,4)); 
grid minor 
% Plot the quiver for the whole matrix 
figure 
% Plot the quiver for the whole set of data 
h0=quiver(rays(:,1), rays(:,2), rays(:,3), rays(:,4)); 
% Get the u, v, x, y data 
u=get(h0,'udata') 
v=get(h0,'vdata') 
x=get(h0,'xdata') 
y=get(h0,'ydata') 
% Delete the data of the last element 
set(h0,'udata',u(1:end-1),'vdata',v(1:end-1),'xdata', ... 
    x(1:end-1),'ydata',y(1:end-1)) 
% Set hold on 
hold on 
% Plot again the quiver for the whole set of data 
h0=quiver(rays(:,1), rays(:,2), rays(:,3), rays(:,4)); 
% Delete the u, v, x, y data of the element you do not want to change the 
% colour 
set(h0,'udata',u(end),'vdata',v(end),'xdata', ... 
    x(end),'ydata',y(end)) 
% Set the desired colour to the remaining object 
h0.Color='r' 
grid minor 

enter image description here

希望这会他lps,

Qapla'