julia - 如何在 Julia 中定义一个 Fortran 类型的等效对象
问题描述
我有一个定义为 mean_covar 的 Fortran 类型,如下所示,
type :: mean_covar
real(kind=r8), allocatable :: mu(:,:)
real(kind=r8), allocatable :: sigma(:,:)
real(kind=r8) :: w
end type
这样我就可以将一些变量设置为 Mean_covar 类型。
我想在 Julia 中定义相同的东西,我知道 Julia 有一个叫做 struct 的东西,具有可变属性,它的字段可以更改。所以我做了一个非常简单的事情,比如,
mutable struct Mean_covar
mu::Array{Float64,2}
end
然后我定义,
musigma = Mean_covar(Array{Float64,2}(undef,2,2))
所以我可以将 musigma.mu 设置为我想要的任何二维数组。
但是我只是想知道,定义musigma的时候一定要这么麻烦吗(需要设置每个字段的值)?我可以简单地做
musigma::Mean_covar
但这给了我一个错误,
UndefVarError: musigma not defined
解决方案
我不确定你想如何构建你的数据,但你可以这样做:
struct MeanCovar
mu::Matrix{Float64}
MeanCovar(n) = new(zeros(n,n))
end
这可以简单地使用:
julia> m = MeanCovar(2)
MeanCovar([0.0 0.0; 0.0 0.0])
请注意,当您知道 MeanCovar 的大小时,它不能是可变的,因为您仍然可以改变 中的值mu
,因为mu
只保留对数组的引用。
julia> m.mu[1,1] = 66
66
julia> m.mu
2×2 Matrix{Float64}:
66.0 0.0
0.0 0.0
推荐阅读
- javascript - 在单箭头(自动返回)功能中添加控制台日志而不添加花括号
- ios - 如何删除一组 GMSMarker?
- powershell - 使用 $PSScriptRoot 从另一个脚本执行 powershell 脚本?
- c++ - 朋友模板专业化
- javascript - 节点 mongodb 将数据存储为字符串而不是对象
- javascript - SyntaxError:bcrypt 模块的意外标识符
- r - 如何在 r 中使用 tidy-model 对数据进行反规范化
- google-workspace - 无法在 Cloud DNS 中编辑域
- c# - 如何在 Unity3D 中更准确地编辑框碰撞器?
- truncate - 在 Clickhouse 中的集群上截断表