前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Julia/Python/Matlab基本语法比较

Julia/Python/Matlab基本语法比较

作者头像
猫叔Rex
发布2020-06-30 11:30:33
1.1K0
发布2020-06-30 11:30:33
举报
文章被收录于专栏:科学计算

相信很多朋友刚开始做算法时应该都是用matlab做理论模型的验证,后来Python又大火,很多小伙伴又争相学起来python,可过了没多久,一个更牛逼的语言又进入了我们的视野--Julia,号称是有matlab似的直观数学表达式,有C的运算速度。相信又有不少朋友蠢蠢欲动了,而小编发现在刚开始学习某种语言时或者在多个语言之间来回切换时,很容易把它的语法跟其他语言搞混,所以今天我们就整理了一份Julia/Python/Matlab三种算法工程师常用的编程语言的基本语法的比较,小伙伴们可以收藏起来,在忘记某个语法时拿出来看看。

基本数据类型

Python:数字、字符串、列表、元组、集合、字典

Matlab:数字、字符串、逻辑值、表、结构体、元胞数组、函数句柄

Julia:数字、字符串、自定义类型(struct/Union/Tuple/Array等)

注:julia 网上很多教程都是针对0.3版本,跟最新的1.0版有很多语法不太一样,在学习时最好看julia官方文档

Python

Matlab

Julia

基本操作

类型

动态语言,在运行期间才去做数据类型检查,因此无需指定数据类,在第一次赋值时会将数据类型记下

动态语言,但可以指定类型,添加类型会显著提高性能和系统稳定性

值有类型,变量没有类型

整数

使用方法:x=1可用x.bit_length()查看x的bit数,python中int型是没有大小限制的,理论上位宽可以无限大

使用方法:x=1matlab中默认都是double类型,也可以用int16(x)将x转为16位有符号数

使用方法:x=1在64位系统中默认是Int64类型的,可用typeof(x)查看x的类型,也可以用Int32(x)将x转成Int32类型

浮点数

使用方法:x=1.0float型

使用方法:x=1.0默认double型

使用方法:x=1.0在64位系统中默认是Float64类型,也可以用Float32(x)将其转换为Float32类型

复数

x = complex(1,2)x1 = x.realx2 = x.imag

x = 1 + 1i*2x1 = real(x)x2 = imag(x)

x = 1 + 2imx1 = real(x)x2 = imag(x)

分数

x = 0.5x.as_integer_ratio()

x = 0.5formalt rat

x = 1//2

不同进制间转换

x1 = int(0b1010)x2 = int(0x10)x3 = hex(10)x4 = bin(20)

x1 = bin2dec(‘1010’)x2 = hex2dec(‘a’)x3 = dec2hex(10)x4 = dec2bin(10)

x1 = 10x2 = UInt8(x1)x3 = Int64(x2)Julia中对于整数只定义了Int和UInt两种类型,其中Int用10进制表示,UInt用16进制表示

字符串

x1 = ‘a’x2 = ‘abc’x3 = “a”x3 = “abcd”单双引号没有区别

x1 = ‘a’x2 = ‘abc’字符和字符串都用单引号

x1 = ‘a’x2 = “abc”跟C一样,字符用单引号,字符串用双引号

查看数据类型函数

a = [1,2,3]type(a)<class 'int'>

a = [1,2,3;4,5,6];class(a)double

a = rand(3,3)typeof(a)Array(Float64,2)

矩阵操作(Julia在矩阵操作方面跟MATLAB基本类似,函数用法也基本一致)

矩阵合并

x = np.ones((2,3))y = np.zeros((2,3))np.hstack((x,y))np.vstack((x,y))

x = ones(2,3)y = zeros(2,3)[x,y]或[x y][x;y]

x = ones(2,3)y = zeros(2,3)[x y][x;y]注:[x,y]是矩阵直接拼接,并不是将矩阵内的元素拼接

矩阵索引

x的索引从0开始

x的索引从1开始

x的索引从1开始

矩阵维度

x.shape

size(x)

size(x)

矩阵求和

x.sum()

sum(x)

sum(x)

函数操作

函数定义

def f1(x): return x,x+1

function [y1,y2] = f1(x)y1 = x;y2 = x + 1;end

function f1(x) x,x+1end简单形式:f(x,y) = x + yjulia特殊用法:+(1,2,3)结果为6

匿名函数多与map/filter等联用

f = lambda x,y:x+yf(2,3)filter(lambda x:x+3,[1,2,3,4])

f=@(x,y)x+yf(2,3)

map(x->x+1,[1,2,3])

不定长参数(默认参数和关键值参数用法相同)

*表示不定长参数为list**表示不定长参数为dictdef f1(*arg1,**arg2)print(arg1)print(arg2)f1(1,2,a=[1,2,3],b=9)

函参中varargin表示变量个数function f1(varargin)for i=1:numel(varargin) disp(varargin{i})endf1(1,’abc’,345)

function f(x...) r1 = length(x) r2 = x[r1] return r1,r2endprint(f(1,2,3,4))

参数类型

无需指定,在函数调用时才会得到参数类型

无需指定,在函数调用时才会得到参数类型

可以不指定,也可以指定function f1(x::Int64)end

控制流

条件语句

if flag<0: a = -1elif:a = 0else: a = 1

if flag<=0 a = -1elseif flag==0 a = 0elsea = 1end

if flag<=0 a = -1elseif flag==0 a = 0elsea = 1end

while语句

while a<5: …

while a<5…end

while a<5…end

for语句

for i in range(10): …

for i = 0:9…end

for i = 0:9…endfor k in [1,2,3,4]println(k)end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 傅里叶的猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本数据类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档