首先
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