如何使用;单元格“;作为Julia函数的输入
我尝试使用一个单元格作为Julia函数的输入,如下所示如何使用;单元格“;作为Julia函数的输入,julia,Julia,我尝试使用一个单元格作为Julia函数的输入,如下所示 U=单元(2) U[1]=零(3,3) U[2]=零(3,3) 函数f_test{S在Julia中,矩阵的大小不是其类型的一部分。因此这里不需要单元格。事实上,这很好: U = Matrix{Float64}[zeros(3, 3), zeros(3, 1)] 这里我们创建了一个向量of矩阵{Float64}矩阵{Float64}是数组{Float64,2}的类型别名,意思是“二维数组的Float64。U的类型是数组{Float64,2}
U=单元(2)
U[1]=零(3,3)
U[2]=零(3,3)
函数f_test{S在Julia中,矩阵的大小不是其类型的一部分。因此这里不需要单元格
。事实上,这很好:
U = Matrix{Float64}[zeros(3, 3), zeros(3, 1)]
这里我们创建了一个向量
of矩阵{Float64}
矩阵{Float64}
是数组{Float64,2}
的类型别名,意思是“二维数组的Float64
。U
的类型是数组{Float64,2},1}
,也就是说,它是一个向量(一维数组)(二维数组)Float64
。不寻常,但完全有效
但是数组的向量与单个数组不同,因此你的函数f_test
在U
上不起作用。你似乎想要的是f_test
的向量化版本,它将函数应用于向量的所有矩阵,并返回包含每个结果的向量。这就是像sin
cur这样的函数rently在Julia中工作(尽管将来可能会发生变化),因此函数不会自动完成这项工作是令人惊讶的
我建议您在数组中显式地映射函数:
map(f_test, U) # result: [0.0, 0.0]
这是最清楚的。如果必须将函数矢量化,则可以定义附加方法本身:
julia> f_test{S<:Matrix}(U::Vector{S}) = map(f_test, U)
f_test (generic function with 2 methods)
julia> f_test(U)
2-element Array{Float64,1}:
0.0
0.0
julia>f_检验{S f_检验(U)
二元数组{Float64,1}:
0
0
但我不推荐这种方法。在Julia中,矩阵的大小不是其类型的一部分。因此,这里不需要
单元格。事实上,这很好:
U = Matrix{Float64}[zeros(3, 3), zeros(3, 1)]
这里我们创建了一个向量
of矩阵{Float64}
矩阵{Float64}
是数组{Float64,2}
的类型别名,意思是“二维数组的Float64
。U
的类型是数组{Float64,2},1}
,也就是说,它是一个向量(一维数组)(二维数组)Float64
。不寻常,但完全有效
但是数组的向量与单个数组不同,因此你的函数f_test
在U
上不起作用。你似乎想要的是f_test
的向量化版本,它将函数应用于向量的所有矩阵,并返回包含每个结果的向量。这就是像sin
cur这样的函数rently在Julia中工作(尽管将来可能会发生变化),因此函数不会自动完成这项工作是令人惊讶的
我建议您在数组中显式地映射函数:
map(f_test, U) # result: [0.0, 0.0]
这是最清楚的。如果必须将函数矢量化,则可以定义附加方法本身:
julia> f_test{S<:Matrix}(U::Vector{S}) = map(f_test, U)
f_test (generic function with 2 methods)
julia> f_test(U)
2-element Array{Float64,1}:
0.0
0.0
julia>f_检验{S f_检验(U)
二元数组{Float64,1}:
0
0
但是我不推荐这种方法。
数组{Any}
(单元格的类型向量)与参数模式不匹配:Any为什么要使用单元格?这几乎总是一个坏主意,因为它没有给Julia关于类型的信息。在你的例子中,你有两个对象的向量,每个对象都有相同的类型。谢谢你的回答。如果我有U=cell(2)U[1]=zeros(3,1)U[2]=zeros(3,3)怎么办
在本例中,它们的类型不同。...@DavidP.Sanders实际上,我需要一个包含不同大小矩阵的U。数组{Any}
(单元格的类型
向量)与参数模式不匹配:Any为什么要使用单元格?这几乎总是一个坏主意,因为它没有给Julia关于类型的信息。在你的例子中,你有两个对象的向量,每个对象都有相同的类型。谢谢你的回答。如果我有U=cell(2)U[1]=zeros(3,1)U[2]=zeros(3,3)怎么办
在这种情况下,它们的类型不同。…。@DavidP.Sanders实际上,我需要一个包含不同大小矩阵的U。