2014-02-21 3 views
1

Я работаю над проектом, который включает использование акселерометра и гироскопа, чтобы получить ориентацию объекта. Я могу передать вектор 3d ориентации от arduino до matlab через последовательную связь.Как можно построить 3D-вектор быстро в Matlab?

Я хочу построить вектор в Matlab для анализа в реальном времени. Я использую quiver3d и drawnow функции в цикле для построения вектора, но функция quiver3d очень медленная, поэтому я вижу ориентацию объекта после 20 секунд спустя.

Есть ли способ построить 3D-векторы быстрее?

Спасибо.

ответ

4

quiver участок может быть слишком большим для построения только одного вектора в 3-D. Вы можете достичь аналогичного сюжета, используя простой plot3, такой как один из приведенных ниже.

На этом рисунке источником вектора является синяя точка, а направление задается красной линией.

enter image description here

Код

%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