温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Julia矩阵操作的方法有哪些

发布时间:2022-05-25 11:25:29 阅读:336 作者:iii 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇“Julia矩阵操作的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Julia矩阵操作的方法有哪些”文章吧。

数学运算

比Matlab更直观的数学表达方式

x = 102x>>20

但这就导致了可能会出现语法的冲突

  • 十六进制整数文本表达式 0xff 可以被解析为数值文本 0 乘以变量 xff

  • 浮点数文本表达式 1e10 可以被解析为数值文本 1 乘以变量 e10

  • 因此,Julia中

  • 以 0x 开头的表达式,都被解析为十六进制文本

  • 以数字文本开头,后面跟着 e 或 E ,都被解析为浮点数文本

运算方法

常用的 + - x /就不多说了,跟其他语言基本完全一样。

这里说一下向量运算,跟MATLAB的操作完全相同,比如向量的点乘,就是说对向量的元素一一操作

[1,2,3].*3>>3-element Array{Int64,1}: 3 6 9

比较运算,支持链式比较

1 <= 2 <= 3 == 3 <=5 >4 >=2>>true

常用的数学函数

# 进位函数round(x)        #四舍五入floor(x)        #向下取整ceil(x)         #向上取整trunc(x)        #trunc是直接砍掉小数,在正数的时候trunc跟floor一样,负数时跟ceil一样# 除法函数div(x,y)        #取模fld(x,y)        #取小于结果的最大整数cld(x,y)        #取大于结果的最小整数rem(x,y)        #取余mod(x,y)        mod1(x,y1)      #如果x是y的整数倍,则返回y,不会返回余数mod2pi(x)       #对2pi取余divrem(x,y)     #返回取模的值和取余的值fldmod(x,y)     #返回取小于x的最大整数和取余的值gcd(x,y...)     #最大公约数lcm(x,y...)     #最小公倍数# 符号函数abs(x)          #求模abs2(x)         #求平方sign(x)         #取符号signbit(x)      #正数返回false,负数返回truecopysign(x,y)   #返回x * sign(y)flipsign(x,y)   #返回x * sign(y) * -1# 开根号 logsqrt(x)         #开根号cbrt(x)         #开三次根hypot(x,y)      #sqrt(x^2 + y^2)exp(x)          #e^xexpm1(x)        #e^-xldexp(x,n)      #x^nlog(x)          #loge(x)log(b,x)        #logb(x)log2(x)         #log2(x)     log10(x)        #log10(x)log1p(x)        #loge(1+x)# 三角函数sin    cos    tan    cot    sec    cscsinh   cosh   tanh   coth   sech   cschasin   acos   atan   acot   asec   acscasinh  acosh  atanh  acoth  asech  acschsinc   cosc

矩阵操作

既然是做科学计算,那肯定是少不了矩阵,先从简单的向量说起
首先定义一个简单的矩阵,在REPL中看返回的类型

a = [1,2,3,4]>>4-element Array{Int64,1}: 1 2 3 4

Julia中也可以像MATLAB中定义步进向量

aa = (1:2:5)aa.startaa.stepaa.stopfirst(aa)step(aa)last(aa)
Int8[345]>>3-element Array{Int8,1}: 3 4 5["one""two""threee"]>>3-element Array{String,1}: "one"    "two"    "threee"[true"two"12.0]>>4-element Array{Any,1}: true          "two"    1         2.0   []>>0-element Array{Any,1}Int8[]>>0-element Array{Int8,1}a = (123)  # tupleb = collect(a)>>3-element Array{Int64,1}: 1 2 3c = collect(1:4) #不能直接写成[1:4]c[2:end]c1 = c      # c1与c的内存地址相同c2 = c[:]   # c2是c的一个拷贝c1[1= 10c>>4-element Array{Int64,1}: 10  2  3  4c2[1= 20c>>4-element Array{Int64,1}: 10  2  3  4
b = [1;2;3;4]>>4-element Array{Int64,1}: 1 2 3 4c = [1 2 3 4]>>1×4 Array{Int64,2}: 1  2  3  4

再来看矩阵拼接中的空格 , ;的区别

x = ones(2,3)y = zeros(2,3)z = [x y]>>2×6 Array{Float64,2}:  1.0  1.0  1.0  0.0  0.0  0.0  1.0  1.0  1.0  0.0  0.0  0.0相当于hcat(x,y)ndims(z)>>2z = [x,y]>>2-element Array{Array{Float64,2},1}:  [1.0 1.0 1.01.0 1.0 1.0]  [0.0 0.0 0.00.0 0.0 0.0]ndims(z)>>1[x;y]>>4×3 Array{Float64,2}:  1.0  1.0  1.0  1.0  1.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0相当于vcat(x,y)ndims(z)>>2

那怎么把[x,y]也变成一个没有嵌套的矩阵呢?

hcat([x,y]...) #表示把矩阵内部的Array作拼接# 矩阵索引,从1开始x[1]>>1x[6]>>1size(x)>>(2,3)length(x)>>6sum(x)>>6

矩阵运算

a = collect(reshape(1:6,2,3))b = ones(2,3)a .+ ba .- ba * b # errora .* ba * b'a / ba ./ b

函数对矩阵操作时,也要加.

A = [1,2,3]sin.(A)>>3-element Array{Float64,1}: 0.8414709848078965 0.9092974268256817 0.1411200080598672

添加/删除/移动

a = [1,2,3]push!(a, 4)pop!(a)push!(a, 4,5,6)push!(a, [7,8,9])>>errorappend!(a, [7,8,9])prepend!(a, [10,11,12])arr = reshape(1:623)circshift(arr, (0,1))circshift(arr, (1,-2))

对于矩阵的基本操作中,很多matlab中的函数Julia中基本也有,用法也基本一致

eg.

rand(10)rand(2,3)rand(Int32,2,3)reshape(1:6, (2,3))

注:如果有些常用的数学函数发现在Julia中不能使用,比如mean()函数,则可以使用Statistics package。常用的数值分析的函数都在里面。

Julia矩阵操作的方法有哪些

以上就是关于“Julia矩阵操作的方法有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4579169/blog/4438125

AI

开发者交流群×