如何制作 3d 数组的轮廓/误差曲面图?

时间:2021-04-12 06:55:31

标签: python loops

我的脚本使用一组不同的 x 和 y 值的方程计算位置误差,并将输出存储到一个空数组 t_error 中。但是,有两个问题需要解决: 1:如何将输出存储在 20_by_20 矩阵而不是 400_by_1 维度中。

2:如何使用 x、y 和输出参数(在我们的示例中为 t_error)制作等高线图(误差曲面)。

示例脚本如下:

**import pandas as pd
import numpy as np
import math
ev_loc= pd.read_csv("test_grid.txt", sep='\t',header=None)
x=np.array(ev_loc[1])
y=np.array(ev_loc[0])
v=3.5
t_error=[]
for s in x:
    for t in y:
        for i, j, k in [[73.9,33.1, 1.268571], [73.5,33.1, 1.268571], [73.4,33.1, 2.854286], [73.7,33.2, 0.317143],[73.7,33.0, 0.317143]]:
            u=((np.sqrt((t-j)**2 + (s-i)**2)/v)*111 - k)
            v=u*u
            t_error.append(float(v))
df_hr = pd.DataFrame(t_error)
numbers = np.array(df_hr)
window_size = 5
i = 0
moving_averages = []
while i < len(numbers) - window_size + 1:
    this_window = numbers[i : i + window_size]

    window_average = sum(this_window)
    moving_averages.append(window_average)
    i += 5
Error = pd.DataFrame(moving_averages)
Error.to_csv('test_total_error.csv')
print(Error)**

test_grid.txt 的数据如下

enter image description here

1 个答案:

答案 0 :(得分:0)

x1=np.linspace(73,75,num=41)
y1=np.linspace(33,35,num=41)
v=3.5
t_error=[]

for i, j, k in [[71.91500,33.82850, 57.2], [72.32200,33.16267, 38.28], [72.57900, 33.61317, 37.48], [73.44883, 33.83300, 27.8], [71.52967,33.15267, 58.8],
         [73.27017,33.65167, 18.44], [73.14017, 33.75200, 29.97], [72.46550,32.63183, 39.98], [73.22900, 32.99867, 14.77], [72.67167, 31.92100, 48.71], 
         [71.91817, 32.53983, 54.73],[71.92333,33.04400, 49.67],[71.74417,32.79617, 57.39]]:
     u=((np.sqrt((y1-j)**2 + (x1-i)**2)/v)*111 - k)
     c=np.sum(u)
     t_error.append(c)
plt.plot(t_error)
plt.show()

应该显示什么错误?