Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用;单元格“;作为Julia函数的输入_Julia - Fatal编程技术网

如何使用;单元格“;作为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}

我尝试使用一个单元格作为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},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。