小编Blu*_*mon的帖子

为什么这个版本的矩阵副本这么慢?

在矩阵复制过程中,我注意到了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)

performance copy compilation julia

5
推荐指数
1
解决办法
119
查看次数

如何使用Matplotlib从灰度图像创建表面图?

假设我有一个灰度图像(大小: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.这导致了我的问题:

  • 我想在绘图期间对我的图像值进行一些插值(例如平滑).这还取决于我的meshgrid的大小,所以我该如何控制它?和,
  • 如何从我的图像中制作灰度值的曲面图?

python plot smooth matplotlib

3
推荐指数
1
解决办法
8302
查看次数

标签 统计

compilation ×1

copy ×1

julia ×1

matplotlib ×1

performance ×1

plot ×1

python ×1

smooth ×1