gpt4 book ai didi

matplotlib imshow 复杂的二维数组

转载 作者:行者123 更新时间:2023-12-04 11:13:50 30 4
gpt4 key购买 nike

有什么好方法可以在 mathplotlib 中将复数的二维数组绘制为图像吗?

将复数的幅度映射为“亮度”或“饱和度”并将相位映射为“色相”(无论如何,色相只不过是 RBG 颜色空间中的相位)是非常有意义的。
http://en.wikipedia.org/wiki/HSL_and_HSV

但据我所知 imshow 只接受标量值,然后使用一些色标进行映射。没有什么比绘制真正的 RGB 图片更合适的了?

我认为只要实现一个接受 3 个浮点数的 2D 元组(向量)数组或形状 [:,:,3] 的浮点数 ndarray 的版本就很容易了。我想这通常是有用的功能。它也可用于绘制真实的 RGB 彩色图像,例如从 OpenCL 输出的纹理

最佳答案

这与@Hooked 代码几乎相同,但速度要快得多。

import numpy as np
from numpy import pi
import pylab as plt
from colorsys import hls_to_rgb

def colorize(z):
r = np.abs(z)
arg = np.angle(z)

h = (arg + pi) / (2 * pi) + 0.5
l = 1.0 - 1.0/(1.0 + r**0.3)
s = 0.8

c = np.vectorize(hls_to_rgb) (h,l,s) # --> tuple
c = np.array(c) # --> array of (3,n,m) shape, but need (n,m,3)
c = c.swapaxes(0,2)
return c

N=1000
x,y = np.ogrid[-5:5:N*1j, -5:5:N*1j]
z = x + 1j*y

w = 1/(z+1j)**2 + 1/(z-2)**2
img = colorize(w)
plt.imshow(img)
plt.show()

关于matplotlib imshow 复杂的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17044052/

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