Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 我怎么能不改变矩阵_Julia - Fatal编程技术网

Julia 我怎么能不改变矩阵

Julia 我怎么能不改变矩阵,julia,Julia,在Julia中,如果t是某个矩阵 t = [1 2; 3 4] t1 = t t1[1,1] = 0 t2 = t t2给出与t1相同的输出 我怎样才能使t2等于t?它们实际上都是相等的: julia> t = [1 2; 3 4] 2×2 Matrix{Int64}: 1 2 3 4 julia> t1 = t 2×2 Matrix{Int64}: 1 2 3 4 julia> t1[1,1] = 0 0 julia> t2 = t 2×2 Ma

在Julia中,如果
t
是某个矩阵

t = [1 2; 3 4]
t1 = t
t1[1,1] = 0
t2 = t
t2
给出与
t1
相同的输出


我怎样才能使
t2
等于
t

它们实际上都是相等的:

julia> t = [1 2; 3 4]
2×2 Matrix{Int64}:
 1  2
 3  4

julia> t1 = t
2×2 Matrix{Int64}:
 1  2
 3  4

julia> t1[1,1] = 0
0

julia> t2 = t
2×2 Matrix{Int64}:
 0  2
 3  4

julia> t == t1 == t2
true

julia> t === t1 === t2
true

julia> pointer(t), pointer(t1), pointer(t2) # identical
(Ptr{Int64} @0x00007fd213d37000, Ptr{Int64} @0x00007fd213d37000, Ptr{Int64} @0x00007fd213d37000)
变量
t
t1
t2
指向相同的数据、相同的内存位置。所以,当你变异t1时,你就变异了所有

如果希望它们不同,只修改一个,则必须使用
copy

julia> t = [1 2; 3 4];

julia> t1 = copy(t);

julia> t1[1,1] = 0;

julia> t2 = copy(t); # or just t if you want to avoid the copy

julia> t == t1 == t2
false

julia> pointer(t), pointer(t1), pointer(t2)
(Ptr{Int64} @0x00007fd21220e900, Ptr{Int64} @0x00007fd2142f9630, Ptr{Int64} @0x00007fd2142f9a90)