首页 > 编程语言 >matlab和python语法方面的差异

matlab和python语法方面的差异

时间:2024-02-26 19:34:34浏览次数:32  
标签:10 python 差异 矩阵 语法 matlab array

同为脚本语言,matlab和python在算法优化过程中都不可避免的会涉及到,甚至有些情况下会涉及到两种语言程序的互相转换,这几天我刚好也做了相关工作,需要将之前用matlab写的一个小算法模块转换成python,以方便和模型集成,过程不难,但因为需要同时涉及两种语言的书写风格,并且这两种语音在某些方面还挺相似,难免会一时混淆,遂简单整理一下形成此篇博文,方便区分及后续查阅。

矩阵相关处理

矩阵维度及成员的差异

matlab中,多维矩阵的维度是固定的,如果维度不统一,定义的时候就会报错

而python中,数组的成员不单单可以是数,也可以是列表等

a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
a.shape # (3,4)
a.ndim # 2
>>> print(a) #二维数组
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
print(type(a))
<class 'numpy.ndarray'>

b = np.array([[1,2,3,4], [5,6,7,8], [9,10,11]])
b.shape # (3,)
b.ndim # 1
>>> print(b) #一维数组,数组成员是不同维度的列表
[list([1, 2, 3, 4]) list([5, 6, 7, 8]) list([9, 10, 11])]
>>> print(type(b))
<class 'numpy.ndarray'>

矩阵索引和切片

matlab和python中的矩阵索引和切片非常相似,但存在很多细微差异,这些细微差异经常会是导致数据对不上的原因。
  • matlab默认取值从1开始计数,而python默认从0开始计数
    即matlab中A(2),对应 python中A[1];

  • 边界值是否取到的差异
    matlab中A(2:5)是A(2)-A(5)四个数,而python中A[2:5]是A[2]--A[4]三个数,并且注意因为第一点差异的存在A(2不等于A[2];

  • matlab中使用(),而python中numpy使用[]
    python中的()表示元组。

  • python中矩阵名是指针,需要特别注意矩阵的赋值

>>>  a=np.array([1,2,3])
>>> b=a
>>> a
array([1, 2, 3])
>>> b
array([1, 2, 3])
>>> a[1]=10
>>> a
array([ 1, 10,  3])
>>> b
array([ 1, 10,  3])

而matlab中不涉及:

>>  a=[1,2,3];
>> b=a;
>> a
a =
        1  2  3
>> b
b =
        1  2  3
>> a[2]=10;
>> a
a =
        1  10  3
>> b
b =
        1  2  3

一些常用矩阵操作

不管是matlab还是python,都可以对矩阵进行一些整体操作。 比如:
  • 对每个元素进行(+,-,*,/)
% matlab
A+1   %每个元素+1
A.^2  %每个元素平方
A[A<=0]=0  %将A中小于0的值赋为0
# python
A+1   #每个元素+1
A**2  #每个元素平方
np.where(A> 0, A, 0)

循环

循环是代码中常用的逻辑,matlab和python的简单差异是:

matlab:

for i = [1:10]
    process;
end

python:

for i in  range(10):
    process

一些常用函数

操作 matlab python
长度 length len
取对数 log10 math.log10
滤波器 filter scipy.signal.lfilter
直方图 histogram np.histogram

标签:10,python,差异,矩阵,语法,matlab,array
From: https://www.cnblogs.com/lulululuyan/p/18033970

相关文章

  • Python + Apollo 实现配置中心
    --coding:utf-8--importjsonimportosimportthreadingimporttimefromdatetimeimportdatetime,timedeltafromtypingimportOptionalimportrequestsimportLogConfigasloggingclassApolloClient(object):definit(self,app_id,cluster='defaul......
  • 简化 Python 日志管理:Loguru 入门指南
    简化Python日志管理:Loguru入门指南在开发和维护软件项目时,高效的日志管理系统对于监控应用程序的行为、调试代码和追踪异常至关重要。Python的标准日志模块虽然功能强大,但其配置和使用往往较为复杂,尤其是对于新手开发者。这就是Loguru库发挥作用的地方,它以极简的方式重新定......
  • Python中字典setdefault()方法和append()的配合使用
    1.setdefault()方法语法dict.setdefault(key,default=None)说明:如果字典中包含给定的键值,那么返回该键对应的值。否则,则返回给定的默认值。Syntax:dict.setdefault(key,default_value)Parameters:Ittakestwoparameters:key–Keytobesearchedinthedictionar......
  • Python报错symbol lookup error: xxx.so: undefined symbol: cufftxxx解决办法
    技术背景在上一篇文章中介绍过如何实现本地MindSpore的CUDA算子,那么在算子编译和使用的过程中可能会出现一些小问题,这里介绍的是编译成功为so动态链接库之后,在python中调用,提示找不到xxx函数/字符的报错。这里使用的编译指令为:$nvcc--shared-Xcompiler-fPIC-oxxx.soxxx.c......
  • Python嵌套绘图并为条形图添加自定义标注
    论文绘图时经常需要多图嵌套,正好最近绘图用到了,记录一下使用Python实现多图嵌套的过程。首先,实现Seaborn分别绘制折线图和柱状图。'''绘制折线图'''importseabornassnsimportmatplotlib.pyplotaspltimportwarningswarnings.filterwarnings("ignore","use_inf_as_n......
  • Python函数每日一讲29 - 一文让你彻底掌握Python中的getattr函数
    引言在Python中,getattr()函数是一种强大的工具,它允许我们在运行时动态地访问对象的属性和方法。本文将介绍getattr()函数的基本语法、常见用法和高级技巧,帮助大家更好地理解和应用这一函数。语句概览getattr()函数的语法如下:getattr(object,name[,default])其中:ob......
  • Python Django适配dm8(达梦)数据库
    官方文档https://eco.dameng.com/document/dm/zh-cn/start/python-development.htmlDjango适配达梦https://blog.csdn.net/qq_35349982/article/details/132165581https://blog.csdn.net/weixin_61894388/article/details/126330168项目适配达梦升级或安装依赖Django==3......
  • Pydantic:强大的Python 数据验证库
    PydanticPydantic是一个在Python中用于数据验证和解析的第三方库。它提供了一种简单且直观的方式来定义数据模型,并使用这些模型对数据进行验证和转换。Pydantic的一些主要特性:类型注解:Pydantic使用类型注解来定义模型的字段类型。你可以使用Python内置的类型、自定义......
  • python如何将自定义目录添加到sys.path中,如何将自定义目录从sys.path中删除
    python如何将自定义目录添加到sys.path中,如何将自定义目录从sys.path中删除背景:在python脚本中,经常需要将自定义的包导入当前脚本,但该包并非pip安装,不在sys.path中,无法直接导入,所以需要临时导入自定义包;另外有时候将自定义的包永久写入了sys.path后,但实际又用不到该包,需要将自定......
  • [oeasy]python0008_输出h字符_REPL_引号_括号_什么是函数
    输出h字符_REPL_引号_括号_什么是函数......