Matlab和numpy几点区别记录

部署运行你感兴趣的模型镜像

首先挂一个常见命令对比:python中numpy与matlab的对应关系_mergerly的博客-CSDN博客

  • 傅里叶变换

二维矩阵的傅里叶变换

matlab的ifft=numpy.fft.fft2

三维矩阵的时候,在matlab中命令为fft2()

numpy可以这样写:

fft = np.fft.fft2(img[:, :, 0]).T
for num in range(1, psf_num):
    fft = np.dstack((fft, np.fft.fft2(img[:, :, num]).T))

傅里叶逆变换也是一样的,二维矩阵两者相等,

三维矩阵的时候,在matlab中命令为ifft2()

numpy可以这样写:

ifft = np.fft.ifft2(img[:, :, 0]).T
for num in range(1, psf_num):
    ifft = np.dstack((ifft, np.fft.ifft2(img[:, :, num]).T))
  • reshape

(这部分是看了大佬的:Python 三维数组转化为二维数组 和MATLAB的reshape函数结果一致_jzjz9888的博客-程序员信息网_matlab和python的三维数组 - 程序员信息网)

三维矩阵reshape为二维的时候

matlab代码:b = reshape(a,  ,  )

numpy:

a = a.transose(1,2,0)

b = numpy.reshape(a, [ , ], order = 'F')

  • 三维矩阵相乘

mmx是matlab一个加速矩阵运算的工具包

mmx('square', a9, [], 't')

help文档里面是:    C = mmx('square', A, [],'t') will perform C = A'*A

对于二维矩阵,matlab和numpy是一样的,如help中缩写

但是如果矩阵是三维,在matlab下面命令一样,在numpy下就可以这样计算:

a9 = batch_blur_base_mat.transpose((1,0,2))
b9 = a9.T
result = np.einsum('ijk,jnk->ink', a9, b9)
  • 稀疏矩阵,目前只用过这个命令

在matlab中是:result = sparse(i_index, j_index, im, m, n);

看了大佬解释(matlab中的sparse函数使用_想要进步的码农的博客-CSDN博客_matlab sparse

原理在于result(i_index(k),j_index(k)) = im(k),并将result的大小指定为m×n

numpy源码中是这样注释自己的命令的:

 numpy和matlab的不同就是numpy中data和两个index必须是一维数组

所以上面的matlab命令在numpy中可以这样写:

i_index1 = i_index.T.flatten()
j_index1 = j_index.T.flatten()
im = im.T.flatten()
result = sparse.csr_matrix((im, (i_index1, j_index1)), [m, n])
  • 稀疏矩阵求逆
python下面:这会用的不是numpy了,返回一个matrix
from scipy.sparse.linalg.inv(im)

等价于matlab的:inv(AS)

  • 记录一个python下面常见的bug

TypeError: data type not understood

这种时候先检查自己的括号什么的有没有少写

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值