欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

julia-向量化的“点”运算符 (第5讲)

程序员文章站 2022-03-03 16:15:36
...
向量化的“点”运算符   2020/5/30
===============================================================================
1.1.用途:计算元素或向量的结果;操作数为数组或标量
1.2.说明:算数运算符和复合运算符都有相应的点操作
                  ! √ +=  -=  *=  /=  \=  %=  ^=  &=  |=  ⊻ =  >>>=  >>=  <<=
                  
===============================================================================  
2.实例:
          
实例1:
A,B,B1=[1,2,3],[4,5,6],2
A ^ 3     #错误:未定义
A .^ 3    #定义为计算元素(或“向量化”)结果[1^3, 2^3, 3^3]

# 3-element Array{Int64,1}:
# 1
# 8
# 27

A .^ B    #A .^ B==(^).(A,B)
# 3-element Array{Int64,1}:
# 1
# 32
# 729
 
A .^ B1#执行广播操作
# 3-element Array{Int64,1}:
# 1
# 4
# 9


2 .* A.^2 .+ sin.(A)#等效:@. 2A^2 + sin(A)  用公式2a^2 + sin(A)对A中的每个元素计算

# 3-element Array{Float64,1}:
# 2.8414709848078967
# 8.909297426825681
# 18.14112000805987
=================================================================================
实例2:嵌套点调用f.(g.(A))
A .+ 3 .* A.^2#等价于嵌套点调用(+).(A, (*).(3, (^).(A, 2))) 数字3 .后面必须留空白
# 3-element Array{Int64,1}:
# 4
# 14
# 30

(+).(A, (*).(3, (^).(A, 2)))
# 3-element Array{Int64,1}:
# 4
# 14
# 30
 
==================================================================================
实例3:复合运算符

A .+= B#等价:@. A += B被解析为A.= A .+ B就地分配操作
# 3-element Array{Int64,1}:
# 5
# 7
# 9

A#注意A被修改
# 3-element Array{Int64,1}:
# 5
# 7
# 9

A=[1,2,3]
@. A += B
# 3-element Array{Int64,1}:
# 5
# 7
# 9

A=[1,2,3]
A.= A .+ B
# 3-element Array{Int64,1}:
# 5
# 7
# 9

==================================================================================
实例4:点语法应用于自定义算子
A,B,C,D=[1,2,3],[4,5,6],[11,12,13],[14,15,16]
⊗(A,B) = kron(A,B)#定义了一个Kronecker积
# ⊗ (generic function with 1 method)

[A,B] .⊗ [C,D]#被解析为[A⊗C, B⊗D]
2-element Array{Array{Int64,1},1}:
 [11, 12, 13, 22, 24, 26, 33, 36, 39]
 [56, 60, 64, 70, 75, 80, 84, 90, 96]

==================================================================================
实例5:            
# 点运算符与数字文字的组合可能是不明确的(如1.+A为1. + A)
# 在这种情况下必须在运算符周围使用空格(在1后面加空格)

1 .+A
# 3-element Array{Int64,1}:
# 2
# 3
# 4
==================================================================================
实例6:操作符 .< 是特别针对数组
A,B=[1,4,7],[2,3,8]
0 .< A .< B       #只有当 A 和 B 有着相同的大小时, A .< B 才是合法
# 3-element BitArray{1}:结果对应布尔数组,满足条件元素返回 true 
# 1
# 0
# 1

==================================================================================

 

相关标签: julia