我正在尝试读取ADCP(海流速度)数据并对其进行清理/处理。数据是在我使用的.nc
文件中的x
和y
分量速度中给出的,所以我必须从分量计算出合成的速度和角度。当我使用np.square来计算组件速度范围的各个元素的平方时,我遇到了精度问题,这些元素与仪器本身的误差大小相同
我怀疑这个错误是由于原始数据的长度造成的(例如-0.02162790298461914
)。我想将原始数据的精度设置为0.001
(ADCP的固有误差),然后重新计算以查看计算误差是否减小。在使用infile.variables['variable'][:]
读取数据时,有没有方法手动设置精度?如果有,我该怎么做?或者可能有一个numpy方法的错误小于np.square(array)
错误的单个示例:
x_vel = -0.02162790298461914
y_vel = -0.3665189743041992
手动计算total_vel = 0.36588029782633846
(这个手动计算是用python使用m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914 ** 2))
完成的)
sript使用numpy数组上的np.sqare
和np.sqrt
计算total_vel
=0.3671565353870392
脚本代码:total_v = np.sqrt(np.square(x_vel) + np.square(y_vel))
好吧,看来我只是忽略了符号惯例的一个拼写错误。。。使用numpy函数的输出实际上是正确的。问题源于-1**2!=(-1) **2和我在计算中滥用括号。。。我想我们每隔一段时间都得花上几个小时搜寻大脑放屁
手动输入应该是
m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914) ** 2)
而不是
m.sqrt((-0.3665189743041992) ** 2 + (-0.02162790298461914 ** 2))
(注意第二项的括号分组…)
相关问题 更多 >
编程相关推荐