美文网首页视觉及vslam中的数学计算机图像理论opencv及vslam
正交矩阵及矩阵变换的python实现--Apple的学习笔记

正交矩阵及矩阵变换的python实现--Apple的学习笔记

作者: applecai | 来源:发表于2019-04-13 11:30 被阅读21次

    1.正交矩阵的性质

    a,逆等于转置,行列式值为±1。
    b,各行以及各列是单位向量且两两正交,标准正交基经正交变换后仍为标准正交基。
    c,变换前后内积不变即向量的模长与夹角不变。

    2.二阶正交矩阵的几何意义

    是绕坐标原点的旋转,或是通过原点直线的反射。
    根据它的行列式是否为正常或非正常来确定。


    t1.png

    3.旋转矩阵是正交矩阵

    通过三角函数推导出旋转矩阵后,发现旋转矩阵是正交矩阵中的一种


    Good_旋转矩阵的推导.png

    4.实现函数旋转变换的python代码

        import numpy as np
        import matplotlib.pyplot as plt
        
        #T = np.array([[3,1],[1,-1]])
        T = np.array([[-1,0],[0,1]])
        x = np.arange(0, 10,0.2)[:,np.newaxis]
        print (x)
        y = 4*(x-1)
        # horizontal stack 合并x和y成为一组数据,制作合集D
        D = np.hstack((x,y))
        mylist = []
        for i in range(len(D)):
            xy_new = T.dot(D[i]) # 对每一组x和y组成的向量,和矩阵T进行内积运算
            mylist.append(xy_new.tolist())  # 每个numpy.array转List
        #print (mylist)
        # 所有list转为numpy
        xy_newAll = np.array(mylist)
        
        #print (xy_newAll)
        x_new = xy_newAll[:,0]  # 取出新的x
        #print(x_new)
        y_new = xy_newAll[:,1]  # 取出新的x
        #print(y_new)
        #创建figure窗口
        plt.figure()
        #设置坐标轴的文字标签
        # plt.xlabel('X axis...')
        # plt.ylabel('Y axis...')
        # 设置x轴的取值范围为:-1到2
        plt.xlim(-10, 10)
        # 设置y轴的取值范围为:-1到3
        plt.ylim(-10, 10)
        # 设置x轴刻度
        # new_ticks = np.linspace(-10, 20, 5)
        # plt.xticks(new_ticks)
        
        # get current axis 获得坐标轴对象
        ax = plt.gca()
        # 将右边 上边的两条边颜色设置为空 其实就相当于抹掉这两条边
        ax.spines['right'].set_color('none')
        ax.spines['top'].set_color('none')
        # 指定下边的边作为 x 轴   指定左边的边为 y 轴
        ax.xaxis.set_ticks_position('bottom')
        ax.yaxis.set_ticks_position('left')
        #指定 data  设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
        ax.spines['bottom'].set_position(('data', 0))
        ax.spines['left'].set_position(('data', 0))
        
        plt.plot(x, y, color='red',linestyle='--')
        plt.plot(x_new, y_new)
        
        plt.show()
    
    
    111.png

    相关文章

      网友评论

        本文标题:正交矩阵及矩阵变换的python实现--Apple的学习笔记

        本文链接:https://www.haomeiwen.com/subject/ltjlwqtx.html