2012-01-11 52 views
4

我有一個使用卡爾曼濾波器的C++算法。代碼中的某處預測四元數,然後使用卡爾曼濾波器更新四元數q在Matlab中使用「engine.h」在C++中繪製四元數

我想繪製Matlab中的兩個圖形與預測四元數和校正(更新)四元數的演化,所以我使用「engine.h」庫在處理過程中發送四元數信息給Matlab(實際上我發送的是一個4x1矩陣)。

所以我的問題是:在Matlab中繪製四元數的最佳方式是什麼,這樣我可以直觀地提取信息?單獨繪製角度可能更好嗎?

+2

你的問題標題不符合您的實際問題。 – 2012-01-11 08:55:26

+0

謝謝,我剛剛糾正它。 – 2012-01-11 08:57:54

+1

如果我沒有弄錯,你的問題與「engine.h」或C++無關,對吧? – 2012-01-11 13:09:14

回答

4

我認爲一個好的選項發送四元作爲載體,以MATLAB,用C++ MATLAB引擎

[QX QY QZ QW]

然後,在MATLAB環境中,你可以使用一個toolbox翻譯成歐拉角,這是一個常見的視覺選項。

對於MATLAB引擎加入工具箱的路徑:

addpath(genpath('C:\Program Files (x86)\MATLAB\R2010a\toolbox\SpinCalc')); 

隨着spincalc工具箱,將是這樣的:

Angles=SpinCalc('QtoEA321',Quaternion,0,0); 
4

好吧,假設的問題是「如何在一個不錯的方式形象化四維空間」, 我能想到的幾個選項:空間的

  • 顯示多個片段,這是( x,y,z,t) - >(x,y),(y,z)等。
  • 顯示(x,y)爲散點圖,編碼z的顏色信息,t的大小點。對於可以使用散射命令:

散射(X,Y,S,C)顯示在所述位置的彩色圓圈由矢量X和Y(指定 ,其必須是相同的尺寸)。

如果你的問題是「如何在一個不錯的方式quarternions可視化, check this out