変換メモ

% comment

# comment

コード行をテキストでコメント化するcomment

for i=1:3
    fprintf('%i\n',i)
end
for i in range(1, 4):
   print(i)

for ループを使用して数値 1、2、3 を出力します。range

a && b

a and b

短絡論理 AND 演算子Python ネイティブ演算子)。スカラー引数のみ

a || b

a or b

短絡論理 OR 演算子Python ネイティブ演算子)。スカラー引数のみ

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
>>> 4 == 4
True
>>> 4 == 5
False

MATLAB の論理型である およびとは対照的に、 PythonブールオブジェクトはTrueおよびですFalse10

a=4
if a==4
    fprintf('a = 4\n')
elseif a==5
    fprintf('a = 5\n')
end
a = 4
if a == 4:
    print('a = 4')
elif a == 5:
    print('a = 5')

if-else ステートメントを作成して がa4 か 5 かをチェックし、結果を出力します

1*i、、、、1*j1i_1j

1j

複素数

eps

np.finfo(float).epsまたはnp.spacing(1)

1 から倍精度で表現可能な次に大きな実数までの距離

load data.mat

io.loadmat('data.mat')

ファイルに保存された MATLAB 変数を読み込みますdata.mat(注: data.matMATLAB/Octave で配列を保存する場合は、最新のバイナリ形式を使用してください。scipy.io.loadmat 保存された配列と詳細情報を含む辞書が作成されます。)

ode45

integrate.solve_ivp(f)

ODE を Runge-Kutta 4,5 と統合する

ode15s

integrate.solve_ivp(f, method='BDF')

ODE と BDF メソッドを統合する

ndims(a)

np.ndim(a)またはa.ndim

配列の次元数a

numel(a)

np.size(a)またはa.size

配列の要素数a

size(a)

np.shape(a)またはa.shape

配列の「サイズ」a

size(a,n)

a.shape[n-1]

array の n 次元の要素の数を取得しますa(MATLAB は 1 ベースのインデックスを使用するのに対し、Python は 0 ベースのインデックスを使用することに注意してください。INDEXINGを参照してください。)

[ 1 2 3; 4 5 6 ]

np.array([[1., 2., 3.], [4., 5., 6.]])

2x3 2D 配列を定義する

[ a b; c d ]

np.block([[a, b], [c, d]])

aブロック、bc、およびから行列を構築します。d

a(end)

a[-1]

MATLAB ベクトル (1xn または nx1) または 1D NumPy 配列 a(長さ n)の最後の要素にアクセスします

a(2,5)

a[1, 4]

2D 配列の 2 行目、5 列目の要素にアクセスしますa

a(2,:)

a[1]または a[1, :]

2D 配列の 2 行目全体a

a(1:5,:)

a[0:5]または、a[:5]またはa[0:5, :]

2D 配列の最初の 5 行a

a(end-4:end,:)

a[-5:]

2D 配列の最後の 5 行a

a(1:3,5:9)

a[0:3, 4:9]

2D 配列の 1 行目から 3 行目、5 列目から 9 列目までa

a([2,4,5],[1,3])

a[np.ix_([1, 3, 4], [0, 2])]

これにより、行列を変更できるようになり、通常のスライスは必要なくなります。

a(3:2:21,:)

a[2:21:2,:]

の 1 行おきa(3 行目から 21 行目まで)

a(1:2:end,:)

a[::2, :]

a最初から始まる の1 行おき

a(end:-1:1,:) またはflipud(a)

a[::-1,:]

a行を逆順に配置

a([1:end 1],:)

a[np.r_[:len(a),0]]

a最初の行のコピーが最後に追加される

a.'

a.transpose()またはa.T

転置するa

a'

a.conj().transpose()またはa.conj().T

の共役転置a

a * b

a @ b

行列の乗算

a .* b

a * b

要素ごとの乗算

a./b

a/b

要素ごとの除算

a.^3

a**3

要素ごとのべき乗

(a > 0.5)

(a > 0.5)

i,j 番目の要素が (a_ij > 0.5) である行列。MATLAB の結果は、論理値 0 と 1 の配列です。NumPy の結果は、ブール値Falseとの配列ですTrue

find(a > 0.5)

np.nonzero(a > 0.5)

a( > 0.5)となるインデックスを見つけます。

a(:,find(v > 0.5))

a[:,np.nonzero(v > 0.5)[0]]

aベクトル v > 0.5の列を抽出します

a(:,find(v>0.5))

a[:, v.T > 0.5]

a列ベクトル v > 0.5の列を抽出します。

a(a<0.5)=0

a[a < 0.5]=0

a0.5 未満の要素はゼロアウトされます

a .* (a>0.5)

a * (a > 0.5)

a0.5 未満の要素はゼロアウトされます

a(:) = 3

a[:] = 3

すべての値を同じスカラー値に設定します

y=x

y = x.copy()

NumPy は参照によって割り当てます

y=x(2,:)

y = x[1, :].copy()

NumPy スライスは参照によるものです

y=x(:)

y = x.flatten()

配列をベクトルに変換します (これによりコピーが強制されることに注意してください)。MATLAB と同じデータ順序を取得するには、 を使用しますx.flatten('F')

1:10

np.arange(1., 11.)または、np.r_[1.:11.]または np.r_[1:10:10j]

増加するベクトルを作成します ( RANGES の注記を参照)

0:9

np.arange(10.)または、 np.r_[:10.]または np.r_[:9:10j]

増加するベクトルを作成します ( RANGES の注記を参照)

[1:10]'

np.arange(1.,11.)[:, np.newaxis]

列ベクトルを作成する

zeros(3,4)

np.zeros((3, 4))

64 ビット浮動小数点ゼロでいっぱいの 3x4 の 2 次元配列

zeros(3,4,5)

np.zeros((3, 4, 5))

64 ビット浮動小数点ゼロでいっぱいの 3x4x5 の 3 次元配列

ones(3,4)

np.ones((3, 4))

64 ビット浮動小数点配列でいっぱいの 3x4 の 2 次元配列

eye(3)

np.eye(3)

3x3 単位行列

diag(a)

np.diag(a)

2D 配列の対角要素のベクトルを返します。a

diag(v,0)

np.diag(v, 0)

非ゼロ値がベクトルの要素である正方対角行列を返します。v

rng(42,'twister')
rand(3,4)
from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)

または古いバージョン:random.rand((3, 4))

デフォルトの乱数ジェネレーターとシード = 42 を使用してランダムな 3x4 配列を生成します。

linspace(1,3,4)

np.linspace(1,3,4)

1 から 3 までの 4 つの等間隔のサンプル

[x,y]=meshgrid(0:8,0:5)

np.mgrid[0:9.,0:6.]またはnp.meshgrid(r_[0:9.],r_[0:6.])

2 つの 2D 配列: x 値の 1 つ、y 値のもう 1 つ

 

ogrid[0:9.,0:6.]またはnp.ix_(np.r_[0:9.],np.r_[0:6.]

グリッド上の関数を評価する最良の方法

[x,y]=meshgrid([1,2,4],[2,4,5])

np.meshgrid([1,2,4],[2,4,5])

 
 

np.ix_([1,2,4],[2,4,5])

グリッド上の関数を評価する最良の方法

repmat(a, m, n)

np.tile(a, (m, n))

~の m × n 個のコピーを作成するa

[a b]

np.concatenate((a,b),1)またはnp.hstack((a,b))または np.column_stack((a,b))またはnp.c_[a,b]

aの列を連結するb

[a; b]

np.concatenate((a,b))または、np.vstack((a,b))またはnp.r_[a,b]

aの行を連結するb

max(max(a))

a.max()またはnp.nanmax(a)

の最大要素a(MATLAB の ndims(a)<=2 では、NaN がある場合、nanmaxこれらを無視して最大値を返します)

max(a)

a.max(0)

配列の各列の最大要素a

max(a,[],2)

a.max(1)

配列の各行の最大要素a

max(a,b)

np.maximum(a, b)

a要素ごとに比較しb、各ペアの最大値を返します。

norm(v)

np.sqrt(v @ v)またはnp.linalg.norm(v)

ベクトルの L2 ノルムv

a & b

logical_and(a,b)

要素ごとの AND 演算子 (NumPy ufunc)注を参照 LOGICOPS

a | b

np.logical_or(a,b)

要素ごとの OR 演算子 (NumPy ufunc)注を参照 LOGICOPS

bitand(a,b)

a & b

ビットごとの AND 演算子 (Python ネイティブおよび NumPy ufunc)

bitor(a,b)

a | b

ビットごとの OR 演算子 (Python ネイティブおよび NumPy ufunc)

inv(a)

linalg.inv(a)

正方 2D 配列の逆a

pinv(a)

linalg.pinv(a)

2D 配列の擬似逆配列a

rank(a)

np.linalg.matrix_rank(a)

2D 配列の行列ランクa

a\b

linalg.solve(a, b)が正方形の場合aさもないとlinalg.lstsq(a, b)

x に対する ax = b の解

b/a

代わりに解決してくださいa.T x.T = b.T

x に対する xa = b の解

[U,S,V]=svd(a)

U, S, Vh = linalg.svd(a); V = Vh.T

特異値分解a

chol(a)

linalg.cholesky(a)

2D 配列のコレスキー分解

[V,D]=eig(a)

D,V = linalg.eig(a)

固有値固有ベクトルa、ここで=

[V,D]=eig(a,b)

D,V = linalg.eig(a, b)

固有値固有ベクトルの ab ここで=

[V,D]=eigs(a,3)

D,V = eigs(a, k=3)

k=32D配列の最大の固有値固有ベクトルを見つけます。a

[Q,R]=qr(a,0)

Q,R = linalg.qr(a)

QR分解

[L,U,P]=lu(a)どこa==P'*L*U

P,L,U = linalg.lu(a)どこa == P@L@U

部分ピボットを使用した LU 分解 (注: P(MATLAB) == transpose(P(NumPy)))

conjgrad

cg

共役勾配ソルバー

fft(a)

np.fft.fft(a)

フーリエ変換a

ifft(a)

np.fft.ifft(a)

フーリエ変換a

sort(a)

np.sort(a)またはa.sort(axis=0)

2D 配列の各列をソートし、a

sort(a, 2)

np.sort(a, axis=1)またはa.sort(axis=1)

2D配列の各行をソートし、a

[b,I]=sortrows(a,1)

I = np.argsort(a[:, 0]); b = a[I,:]

配列を最初の列でソートされた行を含むa配列として保存しますb

x = Z\y

x = linalg.lstsq(Z, y)

次の形式の線形回帰を実行します=

decimate(x, q)

signal.resample(x, np.ceil(len(x)/q))

ローパスフィルタリングによるダウンサンプリング

unique(a)

np.unique(a)

配列内の固有の値のベクトルa

squeeze(a)

a.squeeze()

array のシングルトン次元を削除しますaMATLAB は常に 2D 以上の配列を返しますが、NumPy は 0D 以上の配列を返すことに注意してください。