我对以下内容感到很困惑,
sqrt(1:3) * [1 2 3]
# 3x3 Matrix, as expected
sqrt(1:3) * 1:3
# error `colon` has no method matching...
直到我意识到 1:3 一定是一种不同的野兽,即不仅仅是我从 Matlab 期望的向量。我目前的解决方法是使用hcat
将其转换为向量,sqrt(1:3) * hcat(1:3...)
,有没有更好的方法?
最佳答案
第二个版本的主要问题
sqrt(1:3) * 1:3
实际上是运算符优先级。冒号运算符的优先级非常低,因此这转化为
(sqrt(1:3) * 1):3
这是荒谬的,因此是错误的
ERROR: `colon` has no method matching colon(::Array{Float64,1}, ::Int64)`
话虽如此,如果您用括号“修复它”,它就不起作用,因为未定义运算符。因此,您可能需要 sqrt(1:3) * [1:3]'
。
关于vector - 使用 julia 迭代器作为常规向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802946/