Python和Matlab系统比较
目录
1 概述
2 Python和Matlab比较
2.1 编程习惯
2.2 符号表示对比
2.3 基本数据类型
2.3.1 Python的Dictionary和Matlab的struct的比较
2.3.2 Python的List和Matlab的Cell Array比较
2.3.4 Python的切片和Matlab的切片比较
2.3.5 Python和Matlab在末尾追加元素
3 函数
1 概述
之所以标题这样安排,是因为我个人更喜欢Python,无论是对于未来发展(人工智能)还是给浪漫代码图等等。软件质量:首页 |TIOBE - 软件质量公司
主要是Python是免费的,matlab要N多美刀,好多时候本专业对matlab要求较高,所以对两门编程软件都浅有研究,个人觉得长远发展用Python,Matlab适合学生阶段搞科研比较棒。
建议两者都学,累是累点,放在长远来看,还是那句话,未来的你一定会感谢现在奋斗的自己。对你价值的投资,你不会后悔的,加油吧,少年!
鸡血灌满了,下面完成我们今天的任务:系统比较一下Python和Matlab。
2 Python和Matlab比较
2.1 编程习惯
Python | Matlab | |
注释 | # | % |
续行 | / | … |
缩进 |
用缩进表示程序逻辑,要求同一层次的代码必须有相同的缩进空白数目,否则报错。 错: def myfun2(a,b): c=a+b return c 对: def myfun2(a,b): c=a+b return c |
无要求,但是要程序有逻辑,清晰最好有缩进,尤其是同一层次用相同的缩进数目。 |
开始索引 | 从0开始 | 从1开始 |
索引符号 | [ ] | ( ) |
格式化输出 | print('{0},{1},{2}'.format('lin', 'male', 25)) |
>> k='uid'; ans = uid=sa |
打印 | print函数 | disp( ) : 形同Python中print函数,需要打印的内容放入 ’ ’ 内,若需要打印的内容中包含变量,如 num2str (n)与 ’ 123 ’ 需要使用 [ ]包住,连接各输出内容时不需要 ’ + ’ 号 |
输入 | input函数 | input : 使用方式与Python中大致相同,需要打印内容时方式与disp一致,输入多个值时需要使用 [ , , ] 分隔开,输入字符串时使用 ’ ’ |
结尾是否需要“,” | 不需要 | 需要“,” |
2.2 符号表示对比
Python | Matlab | |
运算符 | +,-,*,/,** | +,-,*,/,^ |
逻辑运算 | >,<,>=,<=,==,!= | >,<,>=,<=,==,~= |
布尔运算 |
and or not |
&,&& |,|| ~ |
整除问题 |
/两边是整数时候为整除 5/3 结果是1 |
/直接取得准确结果 如,5/3 结果是1.6667 |
2.3 基本数据类型
2.3.1 Python的Dictionary和Matlab的struct的比较
Python | Matlab | |
Dictionary VS struct |
Python中定义Dictionary: >>> d = {"server":"mpilgrim", "database":"master"} |
Matlab中创建struct: >> d = struct('server','mpilgrim', 'database','master') |
在Python中通过key来查找value: >>> d["server"] |
在Matlab中通过字符串形式的fieldname来查找value(Using Dynamic Field Names): >> d.('server') ans = mpilgrim >> d.('database') ans = master |
|
在Python中不能通过value来获取key: >>> d["mpilgrim"] |
在Matlab中也不行(不能通过value来查找fieldname): >> d.('mpilgrim') |
|
在Python中修改已经存在的key的value: >>> d["database"] = "pubs" |
在Matlab中修改已经存在的field的value: >> d.('database')='pubs' d = server: 'mpilgrim' |
|
在Python中添加新的key-value对: >>> d["uid"] = "sa" |
在Matlab中添加新的field: >> d.('uid')='sa' d = server: 'mpilgrim' |
|
在Python中删除Dictionary的元素: >>> d |
在Matlab中删除stuct的field: >> d=struct('database', 'master', 'uid', 'sa', 'server', 'mpilgrim') d = database: 'master' >> d=rmfield(d,'uid') d = database: 'master' |
|
在Python中删除Dictionary所有元素: >>> d.clear() |
在Matlab中删除struct所有field: >> d=struct() d = 1x1 struct array with no fields. |
2.3.2 Python的List和Matlab的Cell Array比较
Python | Matlab | |
List VS Cell Array |
Python的List的下标从0开始 | Matlab的Cell Array的下标从1开始。 |
Python中List的定义: >>> li = ["a", "b", "mpilgrim", "z", "example"] |
Matlab中Cell Array的定义: >> li = {'a', 'b', 'mpilgrim', 'z', 'example'} li = 'a' 'b' 'mpilgrim' 'z' 'example' >> li(1) ans = 'a' >> li(5) ans = 'example' |
|
Python中可使用负的List索引 | 但Matlab中不能用负数来索引Cell Array |
2.3.4 Python的切片和Matlab的切片比较
Python | matlab | |
Python中List的slice: >>> li[0:3] 0:3表示得到下标为0、1、2的List元素。 由此可见在Slice这个功能上Python和Matlab很相似但也有很大不同。 |
在Matlab中想要对Cell Array 实现类似的效果要这样做: >> li(1:3) ans = 'a' 'b' 'mpilgrim' 这里1:3是一个向量(1,2,3),用这个向量作为下标对li进行索引。 |
|
Slice的简写: 在Python中: >>> li[:3] |
但是在Matlab中不能这样做,只能写成: >> li(1:3) ans = 'a' 'b' 'mpilgrim' >> li(4:end) ans = 'z' 'example' |
2.3.5 Python和Matlab在末尾追加元素
Python | Matlab | |
在Python中对List,可以使用append和extend来实现,但两者功能有所不同,append用来追加单个元素,extend用来进行List的连接。 在Python中对List使用extend: >>> li = ['a', 'b', 'c'] |
在Matlab中对Cell Array实现类似的效果: >> li={'a','b','c'} li = 'a' 'b' 'c' >> li=[li {'d','e','f'}] li = 'a' 'b' 'c' 'd' 'e' 'f' |
|
>>> len(li) 6 |
>> numel(li) ans = 6 |
|
在Python中对List使用append: >>> li = ['a', 'b', 'c'] |
在Matlab中对Cell Array实现类似效果: >> li={'a','b','c'} li = 'a' 'b' 'c' >> li{end+1}={'d','e','f'} li = 'a' 'b' 'c' {1x3 cell} >> numel(li) ans = 4 >> li{end} ans = 'd' 'e' 'f' |
3 函数
Python |
matlab |
|
函数定义 |
def name(parameters): return output |
function [output]=name(parameters) end |
条件语句 |
if condition : elif condition: else: |
if condition elseif condition else end |
循环语句 |
for number in range(1,n) : while : break 跳出整个循环 continue 跳出该次循环 |
for number = 1:n end while condition end break 跳出整个循环 continue 跳出该次循环 |
lambda |
Python中使用lambda函数: >>> g = lambda x: x*2 |
在Matlab中实现: >> g=@(x)x*2; ans = 6 |
在Python中还可这样用: >>> (lambda x: x*2)(3) |
但是Matlab中好像不行: >> @(x)x*2(3) |
Python和Matlab系统比较相关推荐
- python手机销售系统详细设计_数据库详细设计文档 .doc
[原创]定制代写r/python/spss/matlab/WEKA/sas/sql/C++/stata/eviews数据挖掘和统计分析可视化调研报告等服务(附代码数据), 咨询邮箱: 30253934 ...
- 科学计算:Python VS. MATLAB (1)----给我一个理由先
科学计算:Python VS. MATLAB (1)----给我一个理由先 MATLAB 是一种用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境.使用 MA ...
- 深度学习之Windows下安装caffe及配置Python和matlab接口
去年下半年看了相关目标检测的论文,一些传统的算法,一些CVPR,TPAMI,ECCV,ICCV,,NIPS,比较前沿的进展,主要都是基于深度学习卷积神经网络方面的,包括RCNN,SPP-NET,Fas ...
- python与matlab混合编程_python 与 matlab 混编
Matlab的官方文档中介绍了 Matlab 与其余编程语言之间的引擎接口,其中包括对于 Python 开放的引擎 API,可参考官方教程,其中包括引擎安装,基本使用,以及Python与Matlab之 ...
- ubuntu matlab_有没有人和我一起整理Python的matlab代替
想找人一起整理Python中matlab代替的包,最好是能够将常用功能用tkinter封装起来,积少成多,逐步逼近完整. 比如将scipy中的最小二乘法拟合功能,找个图形界面封装一下,就变成了曲线拟合 ...
- matlab和python的语言_四大机器学习编程语言对比:R、Python、MATLAB、Octave
本文作者是一位机器学习工程师,他比较了四种机器学习编程语言(工具):R.Python.MATLAB 和 OCTAVE.作者列出了这些语言(工具)的优缺点,希望对想开始学习它们的人有用. 图源:Pixa ...
- r matlab spss,特别放送 | 零基础编程入门:Python、Matlab、R、SPSS资料大放送
原标题:特别放送 | 零基础编程入门:Python.Matlab.R.SPSS资料大放送 我们一直相信: 一切不能实实在在帮助到同学的资料 都是耍流氓 小助手的目标是: 做一次又一次真正有价值.愉悦感 ...
- python版本和Matlab版本对应的关系,python调用matlab
调用的话参考 https://blog.csdn.net/m0_37316917/article/details/90256563 https://zhuanlan.zhihu.com/p/67127 ...
- 一文读懂如何用python调用matlab函数(windows环境)
第一步配置环境: 要安装引擎 API,请在操作系统提示符下执行以下命令,其中 matlabroot 是 MATLAB 文件夹的路径.您可能需要管理员权限才能执行这些命令.或者,使用在非默认位置安装用于 ...
- matlab代码用python替换_用python替换Matlab
我是一名工程专业的学生,我必须做大量的数值处理,绘图,模拟等工作.我目前使用的工具是Matlab. 我在大学计算机上使用它来完成大部分任务. 但是,我想知道有哪些可用的免费选项. 我已经做过一些研究, ...
最新文章
- [Server] 服务器配置SSH登录邮件通知
- C# 准备开始学习 并行程序开发
- Unity3D+VR的实现
- Maven的优势举例
- 在Chrome开发者工具里观察到的SAP Spartacus productCodes
- Java Thread pool的学习笔记
- python 装饰器有哪些_python装饰器有什么用
- jQuery-选择器-查找标签
- ASP.NET MVC多语言 仿微软网站效果
- Ubuntu下的QQ-For-Linux 安装
- Android Studio 使用魅族手机调试时,不显示 Log 的解决方法
- 项目 电话号码和E-mail地址提取程序 地实现
- 3842脉宽调制芯片原理
- 2021-9-28 数据结构学习 第四章 - 栈 和 队列【1024Re】
- 什么是马甲APP?寻求高手马甲包封装APP上架
- 《谱图论》读书笔记(第一章)
- OpenGL教程翻译 第二十二课 使用Assimp加载模型
- leetcode:递增的三元子序列
- vsan Linux 网络磁盘,vsan识别不到磁盘
- 科普:为啥手机不能用两张电信卡?