我经常想通过Julia中的矩阵来迭代逐行或按列排列,所以我创建了一对函数来帮助:
function cols(x::Matrix)
function _it()
for ii in 1:size(x,2)
produce(x[:,ii])
end
end
Task(_it)
end
function rows(x::Matrix)
function _it()
for ii in 1:size(x,1)
produce(x[ii,:])
end
在C编程语言中,#define指令允许在源代码中定义宏。这些宏定义允许声明常量值,以便在整个代码中使用。
宏定义不是变量,不能像变量一样被程序代码更改。在创建表示数字、字符串或表达式的常量时,我们通常使用此语法。像这样
#include <stdio.h>
#define NAME "Jack"
#define AGE 10
int main()
{
printf("%s is over %d years old.\n", NAME, AGE);
return 0;
}
好处是,如果代码中有多个函数,我就不需要将常量变量输入到每个函数
我正在尝试学习来自Python的朱莉娅,我在上偶然发现了一段有趣的代码。用户在创建包含函数的元组方面做了一个很好的技巧,因为它们是Julia中的一流对象。以此为基础我想尝试一些东西。
假设我有一个列表:
my_list = zip(0:3, ["wink", "double blink", "close your eyes", "jump"]) |> collect
我想要创建一个由2元素元组组成的列表,其中第二个元素是一个函数:
codes = [(i, x -> push!(x,j)) for (i,j) in m
下面的代码使用高斯方法求解线性系统。当我再次运行时,出现以下错误:
LoadError: InexactError()
while loading In[176], in expression starting on line 4
in setindex! at array.jl:313
[inlined code] from In[176]:13
in anonymous at no file:12
解决了系统运行3次以上的问题。出什么事啦?
A = [4.1 -5 6.8;7.8 -8 -9;-17 4 1];
b = [1,2,3];
x = zeros(3);
m = 0;
我想从Julia (v0.7)中的邻接矩阵生成一个加权和有向网络。
到目前为止,我已经尝试过:
using LightGraphs
using SimpleWeightedGraphs
A = rand(100, 100)
G = Graph(A)
但我得到了错误:
ERROR: ArgumentError: Adjacency / distance matrices must be symmetric
Stacktrace:
[1] SimpleGraph{Int64}(::Array{Float64,2}) at /home/user/.julia/packages/LightGrap
免责声明:我知道以下是非常糟糕的做法。我只是需要一个快速修复调试的目的。
我正在尝试运行一个朱莉娅包,它是using,JuMP.jl和LightXML.jl。
我得到以下错误:
WARNING: both JuMP and LightXML export "name"; uses of it in module JEMSS must be qualified
首先添加LightXML,所以我想复制一个name,然后让JuMP覆盖。
这样做的语法是什么?
name函数包括:
name(::LightXML.XMLElement)
name(::LightXML.XMLNode)
我在读茱莉亚表演技巧,
在开始时,它提到了两个例子。
例1,
julia> x = rand(1000);
julia> function sum_global()
s = 0.0
for i in x
s += i
end
return s
end;
julia> @time sum_global()
0.009639 seconds (7.36 k allocations: 300.310 KiB, 98.32% compilation time)
496.84883432553846
type ExtendedJumpArray{T,T2} <: AbstractArray{Float64,1}
u::T
jump_u::T2
end
Base.length(A::ExtendedJumpArray) = length(A.u)
Base.size(A::ExtendedJumpArray) = (length(A),)
function Base.getindex(A::ExtendedJumpArray,i::Int)
i <= length(A.u) ? A.u[i] : A.jump_u[i-length(A.u)]
end
functio
我只想更改一个元素,如下面的代码所示。
using Flux, CuArrays
a = rand(3,3) |> gpu
CuArrays.allowscalar(false)
a[1, 1] = 1.0f0
因为标量被设置为false,所以它自然会出现在下面。
ERROR: scalar setindex! is disallowed
但是如果去掉了标量,它就会出现在下面。
Performing scalar operations on GPU arrays: This is very slow, consider disallowing these operations with