[英]How can I plot a 3d vector fast in matlab?
我正在做一個項目,其中包括使用加速度計和陀螺儀來確定物體的方向。 我可以通過串行通信將3d方向矢量從arduino傳遞到matlab。
我想在Matlab中繪制矢量以進行實時分析。 我在循環中使用quiver3d
和drawnow
函數繪制矢量,但是quiver3d
函數非常慢,因此我可以在20秒后看到對象的方向。
有什么方法可以更快地繪制3d向量嗎?
謝謝。
quiver
圖對於在3-D中僅繪制一個矢量來說可能太大了。 您可以通過使用簡單的plot3
例如下面繪制的圖)來獲得類似的圖。
在此圖中,向量的原點是藍點,方向由紅線給出。
編碼
%v is the direction of the vector (3 cartesian coordinates)
v = sort(randn(100,3));
v = bsxfun(@rdivide,v,sqrt(sum(v.^2,2)));
%xyz the origin of the vector
ind = linspace(-pi,pi,100);
x = cos(ind);
y = sin(ind);
z = ind;
%the plotting function
figure
for ii = 1:numel(ind)
plot3(x(ii),y(ii),z(ii),'bo'); %origin in blue
set(gca,'XLim', [-3 3], 'YLim', [-3 3], 'ZLim', [-3 3]);
hold on;
hl = plot3( linspace(x(ii), x(ii)+v(ii,1),10), ...
linspace(y(ii), y(ii)+v(ii,2),10), ...
linspace(z(ii), z(ii)+v(ii,3),10), ...
'r'); %direction in red
view(80,10);
pause(0.1);
%clf
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.