gpt4 book ai didi

python - 将 1D 径向轮廓转换为 2D 图像

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:10 25 4
gpt4 key购买 nike

如何将一维向量 f(r) 转换为对称旋转的图像。我正在使用 python 2.7。

我想用图形做什么。我想要右边的图像和左边的矢量:

非常感谢。

最佳答案

您可以构建一个以零为中心的距离矩阵,并将其绘制为您想要的任何函数的参数:

import numpy as np
import matplotlib.pyplot as plt

def centeredDistanceMatrix(n):
# make sure n is odd
x,y = np.meshgrid(range(n),range(n))
return np.sqrt((x-(n/2)+1)**2+(y-(n/2)+1)**2)

def function(d):
return np.log(d) # or any function you might have

d = centeredDistanceMatrix(101)
f = function(d)
plt.plot(np.arange(51),function(np.arange(51)))
plt.show()
plt.imshow(f.T,origin='lower',interpolation='nearest')
plt.show()

,结果是:

Log of numbers

和:

2D log of numbers

编辑: 用于任意数据。

您可以使用 interp1D 将您的矢量传递给函数以提供像素值。

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d

def centeredDistanceMatrix(n):
# make sure n is odd
x,y = np.meshgrid(range(n),range(n))
return np.sqrt((x-(n/2)+1)**2+(y-(n/2)+1)**2)

def function(d):
return np.log(d) # or any funciton you might have

def arbitraryfunction(d,y,n):
x = np.arange(n)
f = interp1d(x, y)
return f(d.flat).reshape(d.shape)

n = 101
d = centeredDistanceMatrix(n)
y = np.random.randint(0,100,n) # this can be your vector
f = arbitraryfunction(d,y,n)
plt.plot(np.arange(101),arbitraryfunction(np.arange(n),y,n))
plt.show()
plt.imshow(f.T,origin='lower',interpolation='nearest')
plt.show()

,结果是这样的:

arbitrary 1D data

,还有这个:

revolution of arbitrary data

关于python - 将 1D 径向轮廓转换为 2D 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com