目录

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';
>> v='sa';
>> sprintf('%s=%s',k,v)

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"]
'mpilgrim'
>>> d["database"]
'master'

在Matlab中通过字符串形式的fieldname来查找value(Using Dynamic Field Names):

>> d.('server')

ans =

mpilgrim

>> d.('database')

ans =

master

在Python中不能通过value来获取key:

>>> d["mpilgrim"]
                     Traceback (innermost last):
                     File "<interactive input>", line 1, in ?
                     KeyError: mpilgrim

在Matlab中也不行(不能通过value来查找fieldname):

>> d.('mpilgrim')
                      ??? Reference to non-existent field 'mpilgrim'.

在Python中修改已经存在的key的value:

>>> d["database"] = "pubs"
              >>> d
                 {'server': 'mpilgrim', 'database': 'pubs'}

在Matlab中修改已经存在的field的value:

>> d.('database')='pubs'

d =

server: 'mpilgrim'
                  database: 'pubs'

在Python中添加新的key-value对:

>>> d["uid"] = "sa"
              >>> d
                      {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}

 在Matlab中添加新的field:

>> d.('uid')='sa'

d =

server: 'mpilgrim'
                      database: 'pubs'

在Python中删除Dictionary的元素:

>>> d
                       {'database': 'master', 'uid': 'sa', 'server': 'mpilgrim'}
              >>> del d['uid']
             >>> d
                     {'database': 'master', 'server': 'mpilgrim'}

在Matlab中删除stuct的field:

>> d=struct('database', 'master', 'uid', 'sa', 'server', 'mpilgrim')

d =

database: 'master'
                 uid: 'sa'
                server: 'mpilgrim'

>> d=rmfield(d,'uid')

d =

database: 'master'
                   server: 'mpilgrim'

在Python中删除Dictionary所有元素:

>>> d.clear()
                >>> d
                         {}

在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"]
>>> li
['a', 'b', 'mpilgrim', 'z', 'example']
>>> li[0]           
'a'
>>> li[4]       
'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]
['a', 'b', 'mpilgrim']

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]
['a', 'b', 'mpilgrim']
>>> li[3:]
['z', 'example']

但是在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']
>>> li.extend(['d', 'e', 'f'])
>>> li
['a', 'b', 'c', 'd', 'e', 'f']

在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']
>>> li.append(['d', 'e', 'f'])
>>> li
['a', 'b', 'c', ['d', 'e', 'f']]
>>> len(li)      
4
>>> li[-1]
['d', 'e', 'f']

在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
>>> g(3)
6

在Matlab中实现:

>> g=@(x)x*2;
>> g(3)

ans =

6

在Python中还可这样用:

>>> (lambda x: x*2)(3)
6

但是Matlab中好像不行:

>> @(x)x*2(3)
??? @(x)x*2(3)
           |
Error: Unbalanced or misused parentheses or brackets.

Python和Matlab系统比较相关推荐

  1. python手机销售系统详细设计_数据库详细设计文档 .doc

    [原创]定制代写r/python/spss/matlab/WEKA/sas/sql/C++/stata/eviews数据挖掘和统计分析可视化调研报告等服务(附代码数据), 咨询邮箱: 30253934 ...

  2. 科学计算:Python VS. MATLAB (1)----给我一个理由先

    科学计算:Python VS. MATLAB (1)----给我一个理由先         MATLAB 是一种用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境.使用 MA ...

  3. 深度学习之Windows下安装caffe及配置Python和matlab接口

    去年下半年看了相关目标检测的论文,一些传统的算法,一些CVPR,TPAMI,ECCV,ICCV,,NIPS,比较前沿的进展,主要都是基于深度学习卷积神经网络方面的,包括RCNN,SPP-NET,Fas ...

  4. python与matlab混合编程_python 与 matlab 混编

    Matlab的官方文档中介绍了 Matlab 与其余编程语言之间的引擎接口,其中包括对于 Python 开放的引擎 API,可参考官方教程,其中包括引擎安装,基本使用,以及Python与Matlab之 ...

  5. ubuntu matlab_有没有人和我一起整理Python的matlab代替

    想找人一起整理Python中matlab代替的包,最好是能够将常用功能用tkinter封装起来,积少成多,逐步逼近完整. 比如将scipy中的最小二乘法拟合功能,找个图形界面封装一下,就变成了曲线拟合 ...

  6. matlab和python的语言_四大机器学习编程语言对比:R、Python、MATLAB、Octave

    本文作者是一位机器学习工程师,他比较了四种机器学习编程语言(工具):R.Python.MATLAB 和 OCTAVE.作者列出了这些语言(工具)的优缺点,希望对想开始学习它们的人有用. 图源:Pixa ...

  7. r matlab spss,特别放送 | 零基础编程入门:Python、Matlab、R、SPSS资料大放送

    原标题:特别放送 | 零基础编程入门:Python.Matlab.R.SPSS资料大放送 我们一直相信: 一切不能实实在在帮助到同学的资料 都是耍流氓 小助手的目标是: 做一次又一次真正有价值.愉悦感 ...

  8. python版本和Matlab版本对应的关系,python调用matlab

    调用的话参考 https://blog.csdn.net/m0_37316917/article/details/90256563 https://zhuanlan.zhihu.com/p/67127 ...

  9. 一文读懂如何用python调用matlab函数(windows环境)

    第一步配置环境: 要安装引擎 API,请在操作系统提示符下执行以下命令,其中 matlabroot 是 MATLAB 文件夹的路径.您可能需要管理员权限才能执行这些命令.或者,使用在非默认位置安装用于 ...

  10. matlab代码用python替换_用python替换Matlab

    我是一名工程专业的学生,我必须做大量的数值处理,绘图,模拟等工作.我目前使用的工具是Matlab. 我在大学计算机上使用它来完成大部分任务. 但是,我想知道有哪些可用的免费选项. 我已经做过一些研究, ...

最新文章

  1. [Server] 服务器配置SSH登录邮件通知
  2. C# 准备开始学习 并行程序开发
  3. Unity3D+VR的实现
  4. Maven的优势举例
  5. 在Chrome开发者工具里观察到的SAP Spartacus productCodes
  6. Java Thread pool的学习笔记
  7. python 装饰器有哪些_python装饰器有什么用
  8. jQuery-选择器-查找标签
  9. ASP.NET MVC多语言 仿微软网站效果
  10. Ubuntu下的QQ-For-Linux 安装
  11. Android Studio 使用魅族手机调试时,不显示 Log 的解决方法
  12. 项目 电话号码和E-mail地址提取程序 地实现
  13. 3842脉宽调制芯片原理
  14. 2021-9-28 数据结构学习 第四章 - 栈 和 队列【1024Re】
  15. 什么是马甲APP?寻求高手马甲包封装APP上架
  16. 《谱图论》读书笔记(第一章)
  17. OpenGL教程翻译 第二十二课 使用Assimp加载模型
  18. leetcode:递增的三元子序列
  19. vsan Linux 网络磁盘,vsan识别不到磁盘
  20. 科普:为啥手机不能用两张电信卡?

热门文章

  1. 【无标题】FOC SDK电机库与STM32用串口指令使能电机开启关闭
  2. 离散数学课后习题答案 左孝凌版
  3. 24点游戏 C语言代码
  4. C语言实战之猜拳游戏
  5. MyBatis3 注解SQL 的使用方法
  6. 如何实现代码自动生成?
  7. win7读取linux硬盘序列号,Windows 下获取硬盘序列号
  8. Java实用教程-Java基本语法-Java程序的构成
  9. Ubuntu安装Matlab
  10. Unix环境高级编程代码(实时更新)