Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中对一组时间间隔不均匀的四元数进行数值微分_Matlab_Quaternions_Numerical_Derivative - Fatal编程技术网

如何在MATLAB中对一组时间间隔不均匀的四元数进行数值微分

如何在MATLAB中对一组时间间隔不均匀的四元数进行数值微分,matlab,quaternions,numerical,derivative,Matlab,Quaternions,Numerical,Derivative,我有大约1000个四元数的时间演化(间隔不均匀),它提供了从惯性坐标系到固定物体的转换。我的目标是获得物体的角速度,因此我需要四元数的导数(或者至少我这么认为),而我很难获得它 到目前为止,我首先尝试使用梯度函数 我也尝试过使用我在网上找到的Fornberg算法,但我认为基于最终结果我没有得到好的结果(一些使用角速度的计算结果应该与我已有的一些信息非常相似) 如果您知道基于DCMs计算角速度的更好方法,这些四元数可以很容易地转换为方向余弦矩阵。我建议先在math.stackexchange.co

我有大约1000个四元数的时间演化(间隔不均匀),它提供了从惯性坐标系到固定物体的转换。我的目标是获得物体的角速度,因此我需要四元数的导数(或者至少我这么认为),而我很难获得它

到目前为止,我首先尝试使用梯度函数

我也尝试过使用我在网上找到的Fornberg算法,但我认为基于最终结果我没有得到好的结果(一些使用角速度的计算结果应该与我已有的一些信息非常相似)


如果您知道基于DCMs计算角速度的更好方法,这些四元数可以很容易地转换为方向余弦矩阵。

我建议先在math.stackexchange.com上问一个关于数学背景的问题。如果您不将时间向量传递给
gradient
函数,它假定一个均匀间隔的时间向量。所以只要使用
梯度(quat(1,:),time)
就可以了。如果不是,还有更多的系列数学问题。谢谢你的快速回答,我试过了,结果似乎也不正确,它也可能是计算角速度的一个错误,但我几乎可以肯定它是正确实现的,其次是Wewalk,这是使用
梯度的正确方法。
time_grad = gradient(time);
dquat(1,:) = gradient(quat(1,:)) ./ (time_grad);
dquat(2,:) = gradient(quat(2,:)) ./ (time_grad);
dquat(3,:) = gradient(quat(3,:)) ./ (time_grad);
dquat(4,:) = gradient(quat(4,:)) ./ (time_grad);