gpt4 book ai didi

julia - 在 Julia 中分配矩阵的对角线值,得到 "error in method definition"

转载 作者:行者123 更新时间:2023-12-04 18:01:14 25 4
gpt4 key购买 nike

我想将矩阵的对角线元素设置为 1,所以我使用 diag()函数,但出现错误。

aa=rand(3,3);
diag(aa)=ones(3)

error in method definition: function LinAlg.diag must be explicitly imported to be extended



我也尝试使用 diag(aa)=[1,1,1] ,但它似乎也不起作用。
怎样才能解决这个问题。

最佳答案

首先,diag(aa) = ones(3)是 Matlab 语法,并不像您想象的那样工作。在 Julia 中,它是 diag 的方法定义,这就是您收到该错误的原因。您必须使用方括号进行索引,就像在 C 风格的语言中一样。 (也许可以阅读 differences from Matlab 以避免将来出现意外。)

要回答这个问题,您可以使用 LinearAlgebra.diagind 获取对角线的索引,并分配 1广播给他们:

julia> diagind(aa)
1:4:9

julia> aa[diagind(aa)] .= 1
3-element SubArray{Float64,1,Array{Float64,1},Tuple{StepRange{Int64,Int64}},true}:
1.0
1.0
1.0

julia> aa
3×3 Array{Float64,2}:
1.0 0.726595 0.195829
0.37975 1.0 0.882588
0.604239 0.309412 1.0

关于julia - 在 Julia 中分配矩阵的对角线值,得到 "error in method definition",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com