julia常用矩阵函数_Julia系列教程3 数学运算 矩阵运算

数学运算https://www.zhihu.com/video/1113554595376295936

数学运算

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

x = 10

2x

>>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,负数返回true

copysign(x,y) #返回x * sign(y)

flipsign(x,y) #返回x * sign(y) * -1

# 开根号 log

sqrt(x) #开根号

cbrt(x) #开三次根

hypot(x,y) #sqrt(x^2 + y^2)

exp(x) #e^x

expm1(x) #e^-x

ldexp(x,n) #x^n

log(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 csc

sinh cosh tanh coth sech csch

asin acos atan acot asec acsc

asinh acosh atanh acoth asech acsch

sinc cosc

矩阵操作

既然是做科学计算,那肯定是少不了矩阵,先从简单的向量说起

首先定义一个简单的矩阵,在REPL中看返回的类型

a = [1,2,3,4]

>>4-element Array{Int64,1}:

1

2

3

4

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

aa = (1:2:5)

aa.start

aa.step

aa.stop

first(aa)

step(aa)

last(aa)

Int8[3, 4, 5]

>>3-element Array{Int8,1}:

3

4

5

["one", "two", "threee"]

>>3-element Array{String,1}:

"one"

"two"

"threee"

[true, "two", 1, 2.0]

>>4-element Array{Any,1}:

true

"two"

1

2.0

[]

>>0-element Array{Any,1}

Int8[]

>>0-element Array{Int8,1}

a = (1, 2, 3) # tuple

b = collect(a)

>>3-element Array{Int64,1}:

1

2

3

c = collect(1:4) #不能直接写成[1:4]

c[2:end]

c1 = c # c1与c的内存地址相同

c2 = c[:] # c2是c的一个拷贝

c1[1] = 10

c

>>4-element Array{Int64,1}:

10

2

3

4

c2[1] = 20

c

>>4-element Array{Int64,1}:

10

2

3

4

b = [1;2;3;4]

>>4-element Array{Int64,1}:

1

2

3

4

c = [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)

>>2

z = [x,y]

>>2-element Array{Array{Float64,2},1}:

[1.0 1.0 1.0; 1.0 1.0 1.0]

[0.0 0.0 0.0; 0.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]

>>1

x[6]

>>1

size(x)

>>(2,3)

length(x)

>>6

sum(x)

>>6

矩阵运算

a = collect(reshape(1:6,2,3))

b = ones(2,3)

a .+ b

a .- b

a * b # error

a .* b

a * b'

a / b

a ./ 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])

>>error

append!(a, [7,8,9])

prepend!(a, [10,11,12])

arr = reshape(1:6, 2, 3)

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教程 从入门到进阶》可以看到所有免费教程视频

微信公众号:Quant_Times

Julia系列教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql 模糊查询 转义字符

MySQL的转义字符“\”\0 一个ASCII 0 (NUL)字符。 \n 一个新行符。 \t 一个定位符。 \r 一个回车符。 \b 一个退格符。 \ 一个单引号(“”)符。 \ " 一个双引号(“ "”)符。 \\ 一个反斜线(“\”)符。 \% 一个…

Pytorch LSTM初识(详解LSTM+torch.nn.LSTM()实现)1

pytorch LSTM1初识 目录 pytorch LSTM1初识 ​​​​​​​​​​​​​​​​​​​​​ 一、LSTM简介1

Java命令行界面(第8部分):Argparse4j

Argparse4j是“ Java命令行参数解析器库”&#xff0c;其主页描述为“基于Python的argparse模块的Java命令行参数解析器库”。 在本文中&#xff0c;我将简要介绍如何使用Argparse4j 0.7.0处理命令行参数&#xff0c;该参数与本系列中的前七篇有关Java命令行处理的文章中所解析…

MvvmLight框架使用入门(三)

MvvmLight框架使用入门&#xff08;三&#xff09; 本篇是MvvmLight框架使用入门的第三篇。从本篇开始&#xff0c;所有代码将通过Windows 10的Universal App来演示。我们将创建一个Universal App并应用MvvmLight框架。 首先通过VS2015创建一个名为UniversalApp的空工程&#x…

Pytorch LSTM实例2

对Pytorch中LSTM实例稍作修改,这是一个词性标注的实例 #导入相应的包 import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optimtorch.manual_seed(1)#准备数据的阶段 def prepare_sequence(seq, to_ix):idxs = [to_ix[w] for w in …

java更好的语言_Java,如果这是一个更好的世界

java更好的语言只是梦想着有一个更好的世界&#xff0c;在该世界中&#xff0c;Java平台中的一些旧错误已得到纠正&#xff0c;而某些令人敬畏的缺失功能也已实现。 不要误会我的意思。 我认为Java很棒。 但是它仍然存在一些问题&#xff0c;就像其他平台一样。 我没有任何特定…

anaconda安装成功测试_学习笔记120—Win10 成功安装Anaconda 【亲测有效,需注意几点!!!】...

Win10 下安装 Anaconda一、下载安装 Anaconda(勾选 PATH)&#xff1a;Anaconda 是专注于数据分析的 Python 发行版本&#xff0c;包含了 conda、Python 等 190 多个科学包及其依赖项。使用 Anaconda 的好处在于可以省去很多配置环境的步 骤&#xff0c;省时省心又便于分析。下载…

Pytorch 词嵌入word_embedding1初识

torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, sparse=False)参数所表示的含义: num_embeddings (int) :嵌入字典的大小 embedding_dim (int) :每个嵌入向量的大小 padding_idx (int, optio…

Python语言 目录

待续.... 转载于:https://www.cnblogs.com/jiangchunsheng/p/11077884.html

JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等

Java 9距离&#xff08;希望&#xff09;数月了&#xff0c;现在该讨论一下即将发生的变化以及您应该采取的措施 Java 9即将来临&#xff08;我们正在计算到达的日子 &#xff09;&#xff0c;其中包含一系列新功能和改进功能。 这就是为什么我们决定创建一份清单来准备自己的…

Pytorch 词嵌入word_embedding2实例(加载已训练词向量)

目录 1、加载已训练好的词嵌入 2、是否需要重新训练词嵌入 3、不重新训练词嵌入时优化器设置

IPv4数据报格式及其语义

IPv4数据报格式及其语义 一、IP数据报的格式如下图所示 版本 首部长度 服务类型 数据报长度 16比特标识 标志 13比特片偏移 寿命 上层协议 首部检验和 32比特源IP地址 32比特目的IP地址 选项&#xff08;如果有的话&#xff09; 数据 IPv4数据报格式 二、各部分语…

华景机器人怎么控制_【华景QQ机器人怎么用】华景QQ机器人好不好_使用技巧-ZOL软件百科...

发布日期&#xff1a;2016年02月21日 Release 2 && Release 3新增功能和优化及修复修复严重崩溃问题。全面支持emoji表情。修复某些用户不能登录。轻量级重包处理。优化消息显示。修复一个数组越界错误。修复一个数组下标不能为0错误。加快消息处理速度。UI线程与消息处…

Java命令行界面(第9部分):parse-cmd

parse-cmd库由单个类ParseCmd.java组成&#xff0c;该类是“用于在Java应用程序中定义和解析命令行参数的Java类。” 该库托管在Google Code存档上 &#xff0c;因此可以随时关闭 。 该JAR似乎也可以在GitHub上使用 。 这篇文章介绍了如何使用parse-cmd 0.0.93处理Java中的命令…

Pytorch--Tensor, Numpy--Array,Python--List 相互之间的转换

1、 Python--List Numpy--Array list = [[1, 2, 4, 8], [0.1, 0.4, 0.9, 0.8]] list_np = np.array(list) print(list_np的维度:,list_np.shape) print(list_np的类型:,type(list_np))运行结果: 2、Python--List Pytorch--Tensor test = [[1, 2, 4, 8], [0.1, 0.4, 0…

Redis的各项功能解决了哪些问题?

Redis是什么 官方简介解释到&#xff1a;Redis是一个基于BSD开源的项目&#xff0c;是一个把结构化的数据放在内存中的一个存储系统&#xff0c;你可以把它作为数据库&#xff0c;缓存和消息中间件来使用。 同时支持strings&#xff0c;lists&#xff0c;hashes&#xff0c;set…

join left semi_HIVE--left semi join

实验&#xff1a;hive> select * from b1;OK1 003 201705111 004 201705121 005 201705132 006 201705143 007 20170515Time taken: 0.041 secondshive> select * from b2;OK1 005 201705132 006 …

java permgen_Java 8:从PermGen到元空间

java permgen您可能已经知道&#xff0c;现在可以下载JDK 8 Early Access 。 这使Java开发人员可以尝试Java 8的某些新语言和运行时功能。这些功能之一是完全删除自Oracle自JDK 7发行以来就宣布的Permanent Generation&#xff08;PermGen&#xff09;空间。例如&#xff0c;自…

总结

写在前面 课程名称&#xff1a;软件工程原理及方法 课程链接&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业要求&#xff1a;https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3393 团队名称&#xff1a;求莫名堂 请…

Pytorch GRU(详解GRU+torch.nn.GRU()实现)

pytorch GRU 目录 pytorch GRU 一、GRU简介1 二、GRU简介2 三、pytorch GRU 3.1 定义GRU ()