百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 和 MatLAB 矩阵/向量操作和语法对照一览表

off999 2024-10-14 12:14 34 浏览 0 评论

本文中python 操作矩阵和向量用 Numpy 工具包,因此首先要导入 numpy;Matlab正常启动即可,矩阵和向量操作是其内置的核心工具。

import numpy as np

创建向量


MATLAB

PYTHON

行向量:

size(1,n)

A = [1 2 3]

A = np.array([1,2,3]).reshape(1,3)

列向量:

size(n,1)

A = [1;2;3]

A = np.array([1,2,3]).reshape(3,1)

1维数组:

size(n,)

不能像size(n,) 这样做

A = np.array([1,2,3)

从j到n,步长为k的整数赋值

A = j:k:n

A = np.arange(j,n+1,k)

k个点的线性插值向量

A = linspace(1,5,k)

A = np.linspace(1,5,k)

创建矩阵


MATLAB

PYTHON

一般矩阵

A = [1 2;3 4]

A = np.array([[1,2],[3,4]])

2*2 的 0 矩阵

A = zeros(2,2)

A = np.zeros((2,2))

2*2 的 1 矩阵

A = ones(2,2)

A = np.ones((2,2))

2*2 的单位矩阵

A = eyes(2,3)

A = np.eys(2)

对角矩阵

A = diag([1 2 3])

A = np.diag([1,2,3])

均匀随机数矩阵

A = rand(2,2)

A = np.random.rand(2,2)

正态随机数矩阵

A = randn(2,2)

A = np.random.randn(2,2)

创建稀疏矩阵

A = sparse(2,2)

A(1,2) = 4

A(2,2) = 1

from scipy.sparse import coo_matrix


A = coo_matrix(([4,1],([0,1],[1,1])),

shape=(2,2))

创建三角矩阵

A = [1 2 3 NaN;

4 5 6 7;

NaN 8 9 0]


spdiags(A',[-1 0 1], 4, 4)

import sp.sparse as sp

diagonals = [[4, 5, 6, 7], [1, 2, 3], [8, 9, 10]]


sp.diags(diagonals, [0, -1, 2]).toarray()




向量与矩阵的操作


MATLAB

PYTHON

矩阵装置

A.'

A.T

复共轭矩阵装置

A‘

A.conj()

两个矩阵横向拼接,即行连接

A = [[1 2] [1 2]]

或者

A = horzcat([1 2], [1 2])

B = np.array([1, 2])

A = np.hstack((B, B))

两个矩阵纵向拼接,即列连接

A = [[1 2]; [1 2]]

或者

A = vertcat([1 2], [1 2])

B = np.array([1, 2])

A = np.vstack((B, B))

矩阵行列重构

10个元素组成的一维矩阵转换为5行2列,


A = reshape(1:10, 5, 2)

A = A.reshape(5, 2)

矩阵转换为向量

A(:)

A = A.flatten()

矩阵左右翻转

fliplr(A)

np.fliplr(A)

矩阵上下翻转

flipud(A)

np.flipdu(A)

重复矩阵(行重复3次,列重复4次)

repmat(A, 3, 4)

np.tile(A, (4, 3))

给向量或矩阵预先分配内存

x = rand(10)

y = zeros(size(x, 1), size(x, 2))

(可以是N/A这样的数据类型)

x = np.random.rand(3, 3)

y = np.empty_like(x)

# new dims

y = np.empty((2, 3))

作用于数据集/矩阵/向量的函数

f = @(x) x.^2

g = @(x, y) x + 2 + y.^2

x = 1:10

y = 2:11

f(x)

g(x, y)

def f(x):

return x**2

def g(x, y):

return x + 2 + y**2

x = np.arange(1, 10, 1)

y = np.arange(2, 11, 1)

f(x)

g(x, y)




访问向量或矩阵的元素


MATLAB

PYTHON

访问某个元素

A(2,2)

A[1,1]

访问指定的行

A(1:4,:)

A[0:4,:]

访问指定的列

A(:,1:4)

A[:,0:4]

删除行

A([1 2 4],:)

A[[0,1,3],:]

矩阵的对角线

diag(A)

np.diag(A)

获得矩阵的维数

[nrow ncol] = size(A)

nrow, ncol = np.shape(A)




矩阵的数学运算


MATLAB

PYTHON

求点积

dot(A,B)

np.dot(A,B) 或者 A @ B

矩阵的乘法

A * B

A @ B

占位矩阵的乘法,

(即其中一个矩阵是空的)

x = np.array([1, 2]).reshape(2, 1)

A = np.array(([1, 2], [3, 4]))

y = np.empty_like(x)

np.matmul(A, x, y)

元素的智能乘法

(elementwise multiplication)

A.*B

A * B


矩阵的幂运算

A^2

np.linalg.matrix_power(A, 2)

矩阵元素的幂运算

A.^2

A ** 2

求逆矩阵

inv(A)

或者

A^(-1)

np.linalg.inv(A)

矩阵的决定值

det(A)

np.linalg.det(A)

矩阵的特征值和特征向量

[vec, val] = eig(A)

val, vec = np.linalg.eig(A)

欧几里德范数

norm(A)

np.linalg.norm(A)

线性方程求解

(Ax = b,其中A为n*n矩阵)

A\b

(Ax = b,其中A为n*n矩阵)


np.linalg.solve(A, b)

最小二乘法求解

(Ax = b,其中A为m*n矩阵)

A\b

(Ax = b,其中A为m*n矩阵)


np.linalg.lstsq(A, b)




求和、最大值和最小值


MATLAB

PYTHON

求每一列的sum/max/min

sum(A, 1)

max(A, [], 1)

min(A, [], 1)

sum(A, 0)

np.amax(A, 0)

np.amin(A, 0)

求每一行的sum/max/min

sum(A, 2)

max(A, [], 2)

min(A, [], 2)

sum(A, 1)

np.amax(A, 1)

np.amin(A, 1)

整个矩阵的sum/max/min

sum(A(:))

max(A(:))

min(A(:))

np.sum(A)

np.amax(A)

np.amin(A)

每一行的sum/max/min的累计值

cumsum(A, 1)

cummax(A, 1)

cummin(A, 1)

np.cumsum(A, 0)

np.maximum.accumulate(A, 0)

np.minimum.accumulate(A, 0)

每一列的sum/max/min的累计值

cumsum(A, 2)

cummax(A, 2)

cummin(A, 2)

np.cumsum(A, 1)

np.maximum.accumulate(A, 1)

np.minimum.accumulate(A, 1)




编程语法


MATLAB

PYTHON

注释行

% This is a comment

# This is a comment

注释块

%{

Comment block

%}

# Block

# comment

# following PEP8

For 循环

for i = 1:N

% 做什么

end

for i in range(n):

# 做什么

while 循环

while i <= N

% 做什么

end

while i <= N:

# 做什么

if

if i <= N

% 做什么

end

if i <= N:

#做什么

if / else

if i <= N

% 做A件事

else

% 做其他事

end

if i <= N:

% 做A件事

else

% 做其他事

end

打印文本和变量

x = 10

fprintf('x = %d \n', x)

x = 10

print(f'x = {x}')

匿名函数

f = @(x) x^2

f = lambda x: x**2

函数

function out = f(x)

out = x^2

end

def f(x):

return x**2

元组

t = {1 2.0 "test"}

t{1}

t = (1, 2.0, "test")

t[0]

命名元组/匿名结构

m.x = 1

m.y = 2

m.x

from collections import namedtuple

mdef = namedtuple('m', 'x y')

m = mdef(1, 2)

m.x

函数调用

a = 2.0

f = @(x) a + x

f(1.0)

a = 2.0

def f(x):

return a + x

f(1.0)

函数占位修改

def f(x):

x **=2

return

x = np.random.rand(10)

f(x)

(本文完)

相关推荐

音频编辑转换器(音频编辑转换器怎么用)

高转低音频转换器接法是指将一种信号转换成另一种信号的装置。信号是信息存在的形式或载体。在自动化仪表设备和自动控制系统中,常将一种信号转换成另一种与标准量或参考量比较后的信号,以便将两类仪表联接起来,因...

安卓游戏中心下载安装(安卓游戏中心app)

格来云游戏、Nibiru游戏城、快游戏、蟋蟀游戏大厅、石头游戏。以上app资源丰富,且支持外设连接,更新及时。1、格来云游戏:格来云游戏是动视云科技开发的APP,格来云不依赖玩家的电脑性能和储存,连...

正当防卫3手游下载(正当防卫三正版下载)

通过QQ浏览器,或者应用商店下载即可。华为手机上下载《正当防卫4》(JustCause4)的方法如下:方法一:使用华为应用市场(华为AppGallery)1.打开华为应用市场。2.在搜索框中输...

可以免费下载所有歌曲的网站

一、http://51Ape.Com一个免费提供无损音乐下载的网站,专注于Ape音乐、Flac音乐以及Wav等各类高品质无损音乐的免费下载,是目前国内比较好的免费音乐下载网站。二、91听歌网提供无损音...

龙珠斗士z手游版下载(龙珠斗士z手游版下载ios)

召唤神龙,实现愿望。龙珠z斗士中只要集齐七颗龙珠就可以召唤出神龙,来实现自己的愿望。在漫画动画各类手游中都是这样首先进入游戏主界面,点击“斗士”按钮进入选角界面,在选角界面中选择你要使用的角色并确认...

可以手动插人物的游戏手游(可以手动插人物的游戏手游app)

在手游对局中,左上角有一个开关,可切换手动开火和自动开火,切换到自动开火后,准星描到敌方人物即会自动开火。当然,并不是所有模式中都有自动开火开关,是特定的一些模式有该开关,比如挑战模式、刀战模式等。另...

手机铃声最好听的歌(手机铃声最好听的歌曲有哪些)

Everythingisnotwhatitseems超喜欢这首的,绝对不会撞见跟你铃声一样的Push艾薇儿的新歌,很好听,也很适合做铃声Foreverandalways钢琴版副歌部分很好听布兰妮的3也...

千千静听官网(十大免费音乐网站)

千千静听起源于2002年,千千静听是一款完全免费的音乐播放软件,集播放、音效、转换、歌词等众多功能于一身。其小巧精致、操作简捷、功能强大的特点,深得用户喜爱,被网友评为中国十大优秀软件之一,并且成为目...

成品ppt网站国外(免费生成ppt的网站)

免费ppt成品怎么下载?不确定您要下载哪类的ppt。如果想要下载初中语文课件的话,免费成品ppt可以通过无忧无虑中学语文网下载,上面按照年级,教材版本分门别类的课件资源,教案参考,还有相应的练习题,甚...

免费的连连看游戏大全(连连看游戏app推荐)

在4399小游戏里,点击儿童小游戏,里面就有不及时的连连看。《连连看》只要将相同的两张牌用三根以内的直线连在一起消除即可。连连看,又称对对卡,是指图案配对的一种益智游戏,有多种形式,如卡片游戏、电子...

图片文字提取免费工具(图片文字提取免费工具在线)

1.打开手机,进入图库,点击打开一张图片。2.点击【分享】图标进入页面。3.点击【提取文字】。注意,只有手机已安装WPS才会出现此图标。第一种方法需要用到我们的聊天神器:QQ,进入任一聊天框并给...

一键群发500微信群软件(有没有微信一键群发5000人的软件)
一键群发500微信群软件(有没有微信一键群发5000人的软件)

1/8进入设置打开微信进入个人页面后,点击【设置】。2/8进入通用点击【通用】。3/8进入辅助功能点击【辅助功能】。4/8进入群发助手点击【群发助手】。5/8开始群发点击【开始群发】。6/8新建群发点击下方【新建群发】。7/8选择好友在这里...

2026-01-23 06:43 off999

万能驱动离线安装包(万能驱动离线版win10)

一、驱动人生()1、驱动人生为了针对用户的离线使用需求,专门推出了离线版的软件,能够在没有网络的情况下使用。2、通过内置的网卡驱动程序,帮助用户优先安装网卡驱动,进而可以连接网络并继续在网上下载安装驱...

中国象棋天天象棋(中国象棋天天象棋手机版)

天天象棋中的专区对局就是ai区,也就是软件区,专门给引擎下棋的,以前3.0版本里有,我玩过,没啥特别的,一开始匹配的都是新手,因为那个模式有独立的段位机制,后面更新之后就给禁掉了,跟ai对局没意思,还...

百度图片(百度图片官网)
  • 百度图片(百度图片官网)
  • 百度图片(百度图片官网)
  • 百度图片(百度图片官网)
  • 百度图片(百度图片官网)

取消回复欢迎 发表评论: