【问题标题】:How can I plot a 3d vector fast in matlab?如何在 matlab 中快速绘制 3d 矢量?
【发布时间】:2014-02-21 08:49:58
【问题描述】:

我正在开展一个项目,其中包括使用加速度计和陀螺仪来获取对象的方向。我可以通过串行通信将 3d 方向矢量从 arduino 传递到 matlab。

我想在 matlab 中绘制向量以进行实时分析。我在循环中使用quiver3ddrawnow 函数来绘制向量,但quiver3d 函数非常慢,所以我可以在20 秒后看到对象的方向。

有什么方法可以更快地绘制 3d 矢量?

谢谢。

【问题讨论】:

    标签: matlab plot arduino accelerometer gyroscope


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      相关资源
      最近更新 更多