优达学城《无人驾驶入门》的第二个项目是实现矩阵类,要求通过python编写一个用来计算矩阵的类Matrix.编写这个类并不难,涉及到的线性代数方面的知识也不多,比如矩阵的加法、减法、乘法,求逆矩阵,创建单位矩阵等。相比之下,理解编写矩阵类的目的反而显得更加重要。
编写矩阵类,是为实现了卡尔曼滤波器。卡尔曼滤波器涉及的知识很广,涵盖了《无人驾驶入门》课程第二部分“贝叶斯定理”和第三部分“使用矩阵”这两部分的内容,包括贝叶斯定义、高斯分布、运动模型、线性代数等内容。个人认为,如果把“实现卡尔曼滤波器”做为项目会更好。可能考虑到难度有些大,课程是通过workspace(“卡尔曼滤波器和你的矩阵类”)的形式演示了如何实现卡尔曼滤波器。workspace还调用了datagenerator用来生成输入的数据,它是非常好的学习资源,值得研究。
1 实现卡尔曼滤波器的步骤
1)创建矩阵类
numpy库的ndarry和matrix对象非常适合用来实现矩阵计算。两个列表相加,是这样实现的:
a = [1,2,3]
b = [4,5,6]
print(a+b)
[1, 2, 3, 4, 5, 6]
而两个长度相同的ndarray对象相加,结果完全不同:
c = np.array([1,2,3