首页 > 编程语言 >Python和Matlab系统比较

Python和Matlab系统比较

时间:2022-12-18 21:34:09浏览次数:72  
标签:database Python mpilgrim 系统 li Matlab server


目录

​​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系统比较_List

 鸡血灌满了,下面完成我们今天的任务:系统比较一下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'

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.


标签:database,Python,mpilgrim,系统,li,Matlab,server
From: https://blog.51cto.com/u_15739983/5951149

相关文章

  • Python安装time库失败?不是吧阿sir你还不知道内置模块不用下载吧
    嗨嗨,今天给python安装time库,一直报错,换源等办法都试过了直到我看到Python中有以下常用模块不用单独安装random模块sys模块time模块os系统操作re正则操作json模块......
  • 年度榜单,我整理了2020年优质的Python实战、热点与可视化文章。
    不知不觉,发现自己已经在发布了这么多文章了,这次为大家做一个总结,方便大家学习和查询。Python实战​​20000字的深度分析,让你彻底搞懂《电信用户流失预测模型》!​​​​数据......
  • Python速查
    1.Python速览官方文档一定要注意使用的是哪个版本有些效果会不同1.1安装教程官网安装使用IDLE自带软件编辑2.基础内容2.1用作计算器通过python可以实现大......
  • 45册 + 325集 + 31套,Python学习资源【2021精华版本】
    给大家准备了如下资料黄同学经过千挑万选,为大家准备好的资源。45本Python电子书325集Python全栈视频【最新版】Python项目开发实战Python数据分析与机器学习实战【最新视频......
  • Python中String模块
    目录Python中String模块详解一、字符串常量二、类1、格式化1.1介绍1.2简单应用1.3格式化输出2、模板化三、函数Python中String模块详解一、字符串常量String库......
  • python2项目打包rpm笔记
    python2项目打包成rpm包项目目录结构和说明#其中demo的是项目的根目录#pkg是代码逻辑目录#config是配置文件目录#main.py是项目的开始目录#Makefile是打包文件......
  • Python-核心编程-学习笔记
    >下划线标示符_xxx不用'frommoduleimport*'导入__xxx___系统定义名字__xxx类中的私有变量名>模块结构和布局(1)起始行(Unix)(2)模块......
  • m基于matlab的OQPSK载波同步通信系统仿真,载波同步采用costas环
    1.算法概述OQPSK调制技术是一种恒包络调制技术,受系统非线性影响小,具有较高的带宽利用率和功率利用率,在卫星环境、无线环境下得到广泛应用。因此,在通信信号侦收设备所处理的......
  • 工作流管理系统参考模型简介
    在阐述工作流引擎之前,我们来了解一下工作流技术的基本知识。早在几年前,为了建立工作流管理系统的相关标准,国际上成立了一个称为“工作流管理联盟”(简称WFMC)的国际组织。她提......
  • m基于matlab的OQPSK载波同步通信系统仿真,载波同步采用costas环
    1.算法概述       OQPSK调制技术是一种恒包络调制技术,受系统非线性影响小,具有较高的带宽利用率和功率利用率,在卫星环境、无线环境下得到广泛应用。因此,在通信信号......