当有一个常数(不是在一个矩阵中)的时候,我怎么做矩阵的加法,乘法呢?

2024-09-30 02:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用矩阵做计算。这是我几乎完成。你知道吗

deltaX = -419.375
deltaY = -99.352
deltaZ = -591.349

deltaXYZ = np.array([deltaX,deltaY,deltaZ]).reshape(3,1)

omegaX = 0.850458
omegaY = 1.817245
omegaZ= -7.862245

omegaXR=radians(omegaX/3600)
omegaYR=radians(omegaY/3600)
omegaZR=radians(omegaZ/3600)

delta = (0.99496/(10**6))

x = 3240036.3696 
y = 990578.5272  
z = 5385763.1648 

swerefkoordinates = np.array([x,y,z]).reshape(3,1)

rZ=np.array([cos(omegaZR),sin(omegaZR),0,-sin(omegaZR),cos(omegaZR),0,0,0,1]).reshape(3,3)

rY=np.array([cos(omegaYR),0,-sin(omegaYR),0,1,0,sin(omegaYR),0,cos(omegaYR)]).reshape(3,3)

rX=np.array([1,0,0,0,cos(omegaXR),sin(omegaXR),0,-sin(omegaXR),cos(omegaXR)]).reshape(3,3)

R=np.dot(rZ,rY,rX)

到目前为止还不错

下一行的计算给了我一些麻烦,我的意思是错误的答案。你知道吗

RR92 = deltaXYZ+(delta+1)*np.dot(R,swerefkoordinates)

我想做的是下面的公式(RR92)。你知道吗

[XYZ] = [deltaX,deltaY,deltaZ]+(1+delta)R[x,y,z]

我很难想象这个公式(现在还不允许添加图片)。不管怎样,[]中的内容都是一个矩阵格式:3行一列。你知道吗


Tags: np矩阵sincosarraydeltareshaperadians
2条回答

我设法解决了这个问题:

from math import *
from numpy import *
import numpy as np

deltaX = -419.375
deltaY = -99.352
deltaZ = -591.349

deltaXYZ = np.matrix([[deltaX],[deltaY],[deltaZ]])

omegaX = 0.850458
omegaY = 1.817245
omegaZ= -7.862245

omegaXR=radians(omegaX/3600)
omegaYR=radians(omegaY/3600)
omegaZR=radians(omegaZ/3600)

delta = (0.99496/(10**6))

x = 3240036.3696
y = 990578.5272
z = 5385763.1648 

swc = np.matrix([[x],[y],[z]])

#Rotationsmatrix for Z
rZ=np.matrix([[cos(omegaZR),sin(omegaZR),0],[-sin(omegaZR),cos(omegaZR),0],[0,0,1]])

#Rotationsmatrix for Y
rY=np.matrix([[cos(omegaYR),0,-sin(omegaYR)],[0,1,0],[sin(omegaYR),0,cos(omegaYR)]])

#Rotationsmatrix for X
rX=np.matrix([[1,0,0],[0,cos(omegaXR),sin(omegaXR)],[0,-sin(omegaXR),cos(omegaXR)]]).reshape(3,3)

R=rZ*rY*rX

#calculation
RR92 = deltaXYZ + (delta+1) * (R*swc)

print RR92

正确:

3239535.0069元 990625.8659 5385201.6355元

为了快速的结果,我转换np.数组按以下步骤计算:

import numpy as np
from numpy import radians, cos, sin, matrix

deltaX = -419.375
deltaY = -99.352
deltaZ = -591.349

deltaXYZ = np.array([deltaX,deltaY,deltaZ]).reshape(3,1)
delXYZ = matrix(deltaXYZ)  # matrix

omegaX = 0.850458
omegaY = 1.817245
omegaZ= -7.862245

omegaXR=radians(omegaX/3600)
omegaYR=radians(omegaY/3600)
omegaZR=radians(omegaZ/3600)

delta = (0.99496/(10**6))

x = 3240036.3696 
y = 990578.5272  
z = 5385763.1648 

swerefkoordinates = np.array([x,y,z]).reshape(1,3)  # 3*1
swc = matrix(swerefkoordinates)  # matrix

rZ=np.array([cos(omegaZR),sin(omegaZR),0,-     sin(omegaZR),cos(omegaZR),0,0,0,1]).reshape(3,3)

rY=np.array([cos(omegaYR),0,-sin(omegaYR),0,1,0,sin(omegaYR),0,cos(omegaYR)]).reshape(3,3)

rX=np.array([1,0,0,0,cos(omegaXR),sin(omegaXR),0,-sin(omegaXR),cos(omegaXR)]).reshape(3,3)

R=np.dot(rZ,rY,rX)
mR = matrix(R)  # matrix

# finally,
RR92 = delXYZ + (delta+1) * (mR*swc.T)  # matrix operatoionz
RR92

# Output
# matrix([[ 3239535.00769073],
#        [  990603.65962255],
#        [ 5385205.71977643]])

相关问题 更多 >

    热门问题