matrix - 用函数初始化矩阵

标签 matrix initialization julia

我在 Julia 中寻找类似推导式的东西,但寻找的是矩阵而不是向量。如果我有一些单变量函数 f(x)我想要一个充满 f(i) 的数组为 i1..10 , 我可以做这个:

[f(i) for i = 1:10]

如果我有一些二变量函数 g(i,j)我想要一个来自 i=[1,10]; j=[1,10] 的矩阵充满了我可以这样做的功能:
M = zeros (10,10)

for i in 1:10
     for j in 1:10
         M[i,j] = g(i,j)
     end
end

是否有一些捷径可以让我以更短的方式表达它,而不会浪费时间分配所有零?

最佳答案

只需使用 multidimensional comprehension直接地:

julia> g(x,y) = 2x+y
g (generic function with 1 method)

julia> [g(i,j) for i=1:10, j=1:10]
10x10 Array{Int64,2}:
  3   4   5   6   7   8   9  10  11  12
  5   6   7   8   9  10  11  12  13  14
  7   8   9  10  11  12  13  14  15  16
  9  10  11  12  13  14  15  16  17  18
 11  12  13  14  15  16  17  18  19  20
 13  14  15  16  17  18  19  20  21  22
 15  16  17  18  19  20  21  22  23  24
 17  18  19  20  21  22  23  24  25  26
 19  20  21  22  23  24  25  26  27  28
 21  22  23  24  25  26  27  28  29  30

通过在末尾添加变量范围,这适用于任意数量的维度。

关于matrix - 用函数初始化矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854524/

相关文章:

php - 为什么要在类中初始化变量?

julia - 删除 Julia 1.1 中向量中的所有重复元素

python - Julia:将 Dict 项作为参数传递给函数

datetime - 如何在 Julia 中使用日期时间?

python - 在 NumPy 中将行向量转换为列向量

OpenGL处理​​多个对象

c++ - 如何设置动态分配数组的内容?

matlab - 如何在没有 for 循环的情况下对两个矩阵的每一列进行快速矩阵乘法?

c++ - 我应该如何使用 openCV 创建矩阵数组

ios - Swift 将文本分配给 xib 文件中的标签