我想计算一个二次形式:x' Q y在 Julia 中。
对于这种情况,计算此值的最有效方法是什么:
Q是对称的。x和y相同(x = y)。Q都是对称的并且x = y.我知道朱莉娅有dot()。但我想知道它是否比 BLAS 调用更快。
给定一个生成器:
\nmyVec1 = rand(0:4, 2)\nmyVec2 = rand(0:4, 8)\n\nmyGen = (val1 + val2 for val1 in myVec1, val2 in myVec2)\nRun Code Online (Sandbox Code Playgroud)\n这基本上是一个有 2 列的矩阵。通过使用可以看出collect(myGen)。
如何创建一个每次调用生成两个值(基本上是一列)的生成器?
\n从概念上讲,相当于:
\nfor myCol in eachcol(collect(myGen))\n @show myCol;\nend\nRun Code Online (Sandbox Code Playgroud)\n只是没有对矩阵进行任何显式分配。
\n我可以myGen针对以下情况进行包装吗:
for value1, value2 in myGen\n dosomethingelse1(value1, value2)\nend\nRun Code Online (Sandbox Code Playgroud)\n换句话说,我正在寻找一种方法来创建一个生成器,它一次返回 2 个(或更多?)连续值,并且可以在循环中使用它来执行此操作。
\n所以基本上,我们在生成器中创建一个二维数组,我想立即访问整个切片。我可以使用实际数组来完成它eachcol,eachrow但是生成器呢?
这是一个测试用例:
\nmyVec1 = rand(0:4, 2);\nmyVec2 = rand(0:4, 800);\n\n@btime begin\n myMat = [val1 + val2 for val1 in …Run Code Online (Sandbox Code Playgroud)