python计算平面的法向-利用协方差矩阵求解特征值和特征向量
Obvious,最小特征值对应的特征向量为平面的法向
这个问题还有个关键是通过python求协方差矩阵的特征值和特征向量,np.linalg.eig()方法直接返回了特征值的向量和特征向量的矩阵
scipy.linalg.eigh()方法可以对返回的特征值和特征向量进行控制,通过eigvals参数,可以控制,比如我要返回最小的特征值,和其对应的特征向量,那么就是eigvals(0:0),在升序的情况下。还是很有用的。
scipy.linalg.eigh(a, b=None, lower=True, eigvals_only=False, overwrite_a=False, overwrite_b=False, turbo=True, eigvals=None, type=1, check_finite=True)
@author: Bambo
""" import numpy as np
import scipy x=[random.randint(0,100) for i in range(40)]
y=[random.randint(0,100) for i in range(40)]
z=[a*3+b*2+1 for a,b in zip(x,y)] r=map(list,zip(x,y,z))
k=mat(r)
re=k.T*k e,v=scipy.linalg.eigh(re,turbo=False,eigvals=(0,0))
#e,v=scipy.linalg.eigh(re,eigvals=(a,b)) print e
print v
下面这段代码是当有两个平面时,通过协方差矩阵的奇异值分解,求两个平面的法向,测试显示结果是正确的。
会有人问为啥你知道了平面的法向还通过奇异值分解又求了一次,为了科研。
# -*- coding: utf-8 -*-
"""
Created on Sun Nov 05 19:37:26 2017 @author: Bambo
""" import numpy as np
import scipy #随机生成平面一上的点
x1=[np.random.randint(0,100) for i in range(400)]
y1=[np.random.randint(0,100) for i in range(400)]
z1=[a*3+b*2+1 for a,b in zip(x1,y1)]
#随机生成平面二上的点
x2=[np.random.randint(0,100) for i in range(400)]
y2=[np.random.randint(0,100) for i in range(400)]
z2=[c*3+d*2+5 for c,d in zip(x2,y2)] x1c=np.mean(x1)
y1c=np.mean(y1)
z1c=np.mean(z1) x2c=np.mean(x2)
y2c=np.mean(y2)
z2c=np.mean(z2) xc=(x1c+x2c)/2
yc=(y1c+y2c)/2
zc=(z1c+z2c)/2 #扩充成为两个平面的点
x1[len(x1):len(x1)]=x2
y1[len(y1):len(y1)]=y2
z1[len(z1):len(z1)]=z2 x=[(x1[i]-xc) for i in range(len(x1))]
y=[(y1[j]-yc) for j in range(len(y1))]
z=[(z1[p]-zc) for p in range(len(z1))]
print x
print y
print z r=map(list,zip(x,y,z))
k=np.mat(r)
re=k.T*k
#求最小特征值对应的特征向量
e,v=scipy.linalg.eigh(re,turbo=False,eigvals=(0,2))
#e,v=scipy.linalg.eigh(re,eigvals=(a,b)) print e
print v
python计算平面的法向-利用协方差矩阵求解特征值和特征向量的更多相关文章
- 利用python做矩阵的简单运算(行列式、特征值、特征向量等的求解)
import numpy as np lis = np.mat([[1,2,3],[3,4,5],[4,5,6]]) print(np.linalg.inv(lis)) # 求矩阵的逆矩阵 [[-1. ...
- 利用Python计算π的值,并显示进度条
利用Python计算π的值,并显示进度条 第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...
- 用Python计算幂的两种方法,非递归和递归法
用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...
- 人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型
人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型 经过前面稍显罗嗦的准备工作,现在,我们终于可以尝试训练我们自己的卷积神经网络模型了.CNN擅长图像处理,keras库的te ...
- Python计算斗牛游戏的概率
Python计算斗牛游戏的概率 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). ...
- Python计算分位数
Python计算分位数 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/gdkyxy2013/article/details/80911514 ...
- Python实现熵值法确定权重
本文从以下四个方面,介绍用Python实现熵值法确定权重: 一. 熵值法介绍 二. 熵值法实现 三. Python实现熵值法示例1 四. Python实现熵值法示例2 一. 熵值法介绍 熵值法是计算指 ...
- Python计算AUC
AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积.另一种解释是:随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进 ...
- python计算出现错误
用python计算39.8-0.1得出的结果是39.699999999999996 其他数字计算正确,唯独这个计算错误. 原因: 中文解释: https://docs.python.org/zh-cn ...
随机推荐
- leetcode解题报告(15):Third Maximum Number
描述 Given a non-empty array of integers, return the third maximum number in this array. If it does no ...
- hadoop笔记-hdfs文件读写
概念 文件系统 磁盘进行读写的最小单位:数据块,文件系统构建于磁盘之上,文件系统的块大小是磁盘块的整数倍. 文件系统块一般为几千字节,磁盘块一般512字节. hdfs的block.pocket.chu ...
- python版本下载时时,官方目录web-based与executable和embeddable 的区别
背景:安装python时不知道选择哪个版本以及他们之间的意思. 1.X86和X86-64的区别:系統是32 bit 的版本还是 64bit 的 2.web-based ,executable , em ...
- vmware如何克隆多个linux系统
安装一次系统相对来说耗时较长,且还要做各种配置,那么克隆就不失为一种好的选择.接下来我把我做系统克隆的步骤写下来,供大家参考: 右键点击已经安装的虚拟机,选择管理-->克隆,接下来弹出一个窗口 ...
- Tkinter 之Text文本框标签
一.参数说明 语法 作用 t=tk.Text()t.insert(END,'插入的文本信息') INSERT:光标的插入点CURRENT:鼠标的当前位置所对应的字符位置END:这个Textbuffer ...
- [端口安全]Hydra密码爆破
目录 0x01 简介 0x02 常见参数 0x03 使用案例 0x04 密码字典 0x01 简介 Hydra中文名:九头蛇,这是一款相当强大的爆破工具,它基本支持了所有可爆破协议,而且容容错率非常好 ...
- Synchronized 原理
1.同步代码块: 反编译结果: monitorenter : 每个对象有一个监视器锁(monitor).当monitor被占用时就会处于锁定状态,线程执行monitorenter指令时尝试获取moni ...
- 4.linux vim 编辑器的基本操作
一.vim编辑器基本操作 1.vim 编辑器 : 三种工作模式 命令模式 a.i.o ...
- Linux 使用 you-get 指令下载网页视频
今天无意中发现一个下载网页视频的好办法 在 Linux 系统中,可以利用 you-get 指令直接下载网页中的视频 1.更新 sudo apt-get update 2.安装 pip sudo apt ...
- vsCode中如何根据屏幕宽度自动换行
在设置中搜索editor.wordWrap 文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎留言.评论