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';
>> 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.

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值