vector - 使用 julia 迭代器作为常规向量

标签 vector iterator julia

我对以下内容感到很困惑,

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/

相关文章:

python - 在 Julia 中获取满足多个 boolean 值的矩阵的列

visual-studio-2010 - 向量超出范围

c++ - 循环通过 std::vector 从 std::string 数组中查找匹配项,更简单的方法吗?

以模板作为函数参数的 C++ 自定义比较函数

java - 从同一个类重写同一个方法两次

java - 为什么可以使用 map.vaules 上的迭代器来移除 HashMap#Entry?

java - 当 JVM 使用 for-each 循环迭代数组时,它会创建迭代器吗?

java - R xlsx addDataFrame 在 sheet$getWorkbook : $ operator is invalid for atomic vectors 中产生错误

Julia 对微分方程积分 : MethodError: no method matching

Julia 打印语句在某些情况下不起作用