For loop 用嵌套for循环填充Julia矩阵

For loop 用嵌套for循环填充Julia矩阵,for-loop,matrix,julia,For Loop,Matrix,Julia,我有两个数组和一个空矩阵,我需要执行一个函数,使生成的矩阵包含两个数组的每个组合 不幸的是,我不能单独运行数组,因为它们都是函数的可选参数。我认为最好的方法是通过嵌套循环来实现,但现在我不确定 我曾尝试将其中一个矩阵相乘,以使其包含必要的副本,但由于实际数据有点大,我很难做到这一点 我已经尝试过这些嵌套循环的许多版本 a = [ 1 2 3 ] b = [ 4 5 6 7 ] ab = zeros(3,4) for i = 1:length(a) for j = 1:length(b)

我有两个数组和一个空矩阵,我需要执行一个函数,使生成的矩阵包含两个数组的每个组合

不幸的是,我不能单独运行数组,因为它们都是函数的可选参数。我认为最好的方法是通过嵌套循环来实现,但现在我不确定

我曾尝试将其中一个矩阵相乘,以使其包含必要的副本,但由于实际数据有点大,我很难做到这一点

我已经尝试过这些嵌套循环的许多版本

a = [ 1 2 3 ]
b = [ 4 5 6 7 ]
ab = zeros(3,4)

for i = 1:length(a)
    for j = 1:length(b)
        ab[??] = function(x = a[??], y = b[??])
    end
end
ab=[1x4 1x5 1x6 1x7,2x4 2x5 2x6 2x7,3x4 3x5 3x6 3x7]

这不只是

a'.*b
?

哦,现在我必须再写一些字符才能超过可接受的最小答案长度,但我真的没有什么要添加的,我希望代码是不言自明的。

这不是很简单吗

a'.*b
?


哦,现在我必须再写一些字符才能超过可接受的最小答案长度,但我没有什么要补充的,我希望代码是不言自明的。

您的问题可以通过以下方式解决:

a'
中的素数转置
a
使形状正确

但是请注意,
a=[1 2 3]
构造了一个
1×3数组{Int64,2}
,它是一个矩阵。对于向量(您可能称之为“数组”),请使用逗号:
a=[1,2,3]
等。如果您的数据是这种形式的,则必须反过来转置:

julia> f.([1,2,3], [4,5,6,7]')
3×4 Array{Tuple{Int64,Int64},2}:
 (1, 4)  (1, 5)  (1, 6)  (1, 7)
 (2, 4)  (2, 5)  (2, 6)  (2, 7)
 (3, 4)  (3, 5)  (3, 6)  (3, 7)

顺便说一句,这被称为(for
f=*
),或者是它的泛化。如果
f
是运算符
,您可以使用虚线中缀广播:
a'∘. b

您的问题可以通过以下方式解决:

a'
中的素数转置
a
使形状正确

但是请注意,
a=[1 2 3]
构造了一个
1×3数组{Int64,2}
,它是一个矩阵。对于向量(您可能称之为“数组”),请使用逗号:
a=[1,2,3]
等。如果您的数据是这种形式的,则必须反过来转置:

julia> f.([1,2,3], [4,5,6,7]')
3×4 Array{Tuple{Int64,Int64},2}:
 (1, 4)  (1, 5)  (1, 6)  (1, 7)
 (2, 4)  (2, 5)  (2, 6)  (2, 7)
 (3, 4)  (3, 5)  (3, 6)  (3, 7)

顺便说一句,这被称为(for
f=*
),或者是它的泛化。如果
f
是运算符
,您可以使用虚线中缀广播:
a'∘. b

还有一个列表:

julia> a = [1,2,3];

julia> b = [4,5,6,7];

julia> ab = [(x,y) for x in a, y in b]
3×4 Array{Tuple{Int64,Int64},2}:
 (1, 4)  (1, 5)  (1, 6)  (1, 7)
 (2, 4)  (2, 5)  (2, 6)  (2, 7)
 (3, 4)  (3, 5)  (3, 6)  (3, 7)

还有一个列表:

julia> a = [1,2,3];

julia> b = [4,5,6,7];

julia> ab = [(x,y) for x in a, y in b]
3×4 Array{Tuple{Int64,Int64},2}:
 (1, 4)  (1, 5)  (1, 6)  (1, 7)
 (2, 4)  (2, 5)  (2, 6)  (2, 7)
 (3, 4)  (3, 5)  (3, 6)  (3, 7)