在矩阵复制过程中,我注意到了julia的奇怪行为.
考虑以下三个功能:
function priv_memcopyBtoA!(A::Matrix{Int}, B::Matrix{Int}, n::Int)
A[1:n,1:n] = B[1:n,1:n]
return nothing
end
function priv_memcopyBtoA2!(A::Matrix{Int}, B::Matrix{Int}, n::Int)
ii = 1; jj = 1;
while ii <= n
jj = 1 #(*)
while jj <= n
A[jj,ii] = B[jj,ii]
jj += 1
end
ii += 1
end
return nothing
end
function priv_memcopyBtoA3!(A::Matrix{Int}, B::Matrix{Int}, n::Int)
A[1:n,1:n] = view(B, 1:n, 1:n)
return nothing
end
Run Code Online (Sandbox Code Playgroud)
编辑:1)我测试了代码是否会抛出,BoundsError
因此jj = 1 #(*)
初始代码中缺少标记的行.测试结果已经来自固定版本,所以它们保持不变.2)我已经添加了视图变体,感谢@Colin T Bowers解决这两个问题.
似乎这两个函数应该导致或多或少相同的代码.但我得到了
A = fill!(Matrix{Int32}(2^12,2^12),2); B = Int32.(eye(2^12));
Run Code Online (Sandbox Code Playgroud)
结果
@timev …
Run Code Online (Sandbox Code Playgroud) 假设我有一个灰度图像(大小:550x150像素).我用matplolib加载图像
import matplotlib.pyplot as plt
import matplotlib.image as mp_img
image = mp_img.imread("my-cat.png")
plt.imshow(image)
plt.show()
Run Code Online (Sandbox Code Playgroud)
现在,plt.imshow
在屏幕上显示图像.但我想要的是灰度值的表面图,如下所示:
.Colour并不是必需品,但它对高度线有帮助.我知道,我需要一个表单函数f(x,y) -> z
来创建表面图.所以,我想(x_pixel,y_pixel)
在我的图像中使用灰度值来获取值f
.这导致了我的问题: