python求协方差矩阵_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计算平面的法向-利用协方差矩阵求解特征值和特征向量...相关推荐
- python求零点_python – 计算大序列的过零点的结果不同
这个问题源于查看 this关于计算 zero crossings数量的问题的答案.提供了几个解决问题的答案,但NumPy appproach在时间上摧毁了其他问题. 问题:为什么NumPy解决方案提供 ...
- 使用python求解特征值与特征向量
#使用python求解特征值与特征向量 问题描述: 求解矩阵[[1.25,0.375,0],[0.375,1.25,-0.5],[0,-0.5,0.875]]的特征值与特征向量 参考链接1: 百度经验 ...
- python用海伦公式求面积_Python:平面直角坐标系下用三点求所构三角形面积
我使用了一种特殊方式,计算平面直角坐标系下三点所构成(如果可行的话)的三角形的面积.这个方法,不同於常见的海伦公式. 设此三点坐标分别为: 算出最大最小的 与 ,并根据三点坐标,虚构出一个矩形,两边分 ...
- python求乘积_Python实现求笛卡尔乘积的方法
Python实现求笛卡尔乘积的方法 本文实例讲述了Python实现求笛卡尔乘积的方法.分享给大家供大家参考,具体如下: 在数学中,两个集合X和Y的笛卡尓乘积(Cartesian product),又称 ...
- python求对数_python中取对数
技术 | Python从零开始系列连载(二十七) 我们接着上一期的Python,继续跟大家分享有关Python中常用的数值计算和正则表达式. 运算符 1)数值运算 +.-.*./ % (求余数) // ...
- 用python求兀_python求π
<像计算机科学家一样思考Python(第2版)>--2.5 操作顺序 本节书摘来自异步社区<像计算机科学家一样思考Python(第2版)>一书中的第2章,第2.5节,作者[美] ...
- python求积分_python 求定积分和不定积分示例
求f(x) = sin(x)/x 的不定积分和负无穷到正无穷的定积分 sin(x)/x 的不定积分是信号函数sig ,负无穷到正无穷的定积分为pi import math import numpy a ...
- python求圆面积_python如何求圆的面积
首先我们要知道圆的面积计算公式:S = πr²,公式中S为所求圆的面积,π为圆周率,r为圆的半径. 示例: # 定义一个方法来计算圆的面积 def findArea(r): PI = 3.142 re ...
- python求圆面积_python如何求圆的面积 python求圆的面积方法
python如何求圆的面积?本篇文章小编给大家分享一下python求圆的面积方法,代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 首先我们要知道圆的面积计算 ...
- python求乘积_Python实现求笛卡尔乘积方法详解
这篇文章主要介绍了Python实现求笛卡尔乘积的方法,结合实例形式分析了Python计算笛卡尔乘积的原理与实现技巧,需要的朋友可以参考下 本文实例讲述了Python实现求笛卡尔乘积的方法.分享给大家供 ...
最新文章
- Linux2.6内核 -- 编码风格(3)
- Leetcode 剑指 Offer 40. 最小的k个数 (每日一题 20210825)
- JSP简单练习-猜字母游戏
- php测试宽带速度慢,宽带速度慢怎么办?
- jzoj5365-[GDOI2018模拟9.14]通信【线段树合并】
- 到华为去,到AI最前沿去~ 华为杭州研究所欢迎您!
- 重磅!华为云社区·CSDN【寻找黑马程序员】有奖征文活动奖项公布!!
- Angular通过XHR加载模板而限制使用file://(解决方案)
- android simple-xml,使用Maven构建Android项目-dexer在simple-xml依赖项上失败
- vue视频保存不下来_女子直播吃章鱼被“反杀”!拔不下来了,视频超痛……
- 【译】Seaborn教程(二)选择配色方案
- 分布式操作系统的架构与性能
- .net 开发工程师 面试题
- 计算机6005是开机时间,怎么查电脑的开机,和关机时间·,同学们
- Python入门——文件读写
- Docker基础-使用Dockerfile创建镜像
- XILINX 7series/ultrascale IDDR/ODDR使用区别
- Python实现分钟倒计时
- 十大经典Java手机游戏 Top Ten Best Java Mobile Games
- 网站域名被劫持存在几种情况