重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关Julia/Python/Matlab基本语法比较是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
在香洲等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、网站设计 网站设计制作按需定制,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,外贸网站制作,香洲网站建设费用合理。
相信很多朋友刚开始做算法时应该都是用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=1 matlab中默认都是double类型,也可以用int16(x)将x转为16位有符号数 | 使用方法:x=1 在64位系统中默认是Int64类型的,可用typeof(x)查看x的类型,也可以用Int32(x)将x转成Int32类型 |
浮点数 | 使用方法:x=1.0 float型 | 使用方法:x=1.0 默认double型 | 使用方法:x=1.0 在64位系统中默认是Float64类型,也可以用Float32(x)将其转换为Float32类型 |
复数 | x = complex(1,2) x1 = x.real x2 = x.imag | x = 1 + 1i*2 x1 = real(x) x2 = imag(x) | x = 1 + 2im x1 = real(x) x2 = imag(x) |
分数 | x = 0.5 x.as_integer_ratio() | x = 0.5 formalt 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 = 10 x2 = 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) | 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+1 end 简单形式: f(x,y) = x + y julia特殊用法: +(1,2,3)结果为6 |
匿名函数 多与map/filter等联用 | f = lambda x,y:x+y f(2,3) filter(lambda x:x+3,[1,2,3,4]) | f=@(x,y)x+y f(2,3) | map(x->x+1,[1,2,3]) |
不定长参数 (默认参数和关键值参数用法相同) | *表示不定长参数为list **表示不定长参数为dict def 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}) end f1(1,’abc’,345) | function f(x...) r1 = length(x) r2 = x[r1] return r1,r2 end print(f(1,2,3,4)) |
参数类型 | 无需指定,在函数调用时才会得到参数类型 | 无需指定,在函数调用时才会得到参数类型 | 可以不指定,也可以指定 function f1(x::Int64) end |
控制流 | |||
条件语句 | if flag<0: a = -1 elif: a = 0 else: a = 1 | if flag<=0 a = -1 elseif flag==0 a = 0 else a = 1 end | if flag<=0 a = -1 elseif flag==0 a = 0 else a = 1 end |
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 … end for k in [1,2,3,4] println(k) end |
以上就是Julia/Python/Matlab基本语法比较是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。