Hướng dẫn is matlab equivalent to python? - Matlab có tương đương với python không?

Introduction#

Matlab® và Numpy có rất nhiều điểm chung, nhưng Numpy được tạo ra để làm việc với Python, không phải là bản sao MATLAB. Hướng dẫn này sẽ giúp người dùng MATLAB bắt đầu với Numpy.

Một số khác biệt chính#

Trong MATLAB, loại cơ bản, ngay cả đối với vô hướng, là một mảng đa chiều. Các bài tập mảng trong MATLAB được lưu trữ dưới dạng mảng 2D của số điểm nổi chính xác kép, trừ khi bạn chỉ định số lượng kích thước và loại. Các hoạt động trên các phiên bản 2D của các mảng này được mô hình hóa trên các hoạt động ma trận trong đại số tuyến tính.

Trong Numpy, loại cơ bản là một đa chiều

for i=1:3
    fprintf('%i\n',i)
end
1. Bài tập mảng trong numpy thường được lưu trữ dưới dạng mảng n chiều với loại tối thiểu cần thiết để giữ các đối tượng theo trình tự, trừ khi bạn chỉ định số lượng kích thước và loại. Numpy thực hiện các hoạt động theo từng yếu tố, do đó, nhân các mảng 2D với
for i=1:3
    fprintf('%i\n',i)
end
2 không phải là phép nhân ma trận-nó là một phép nhân theo từng phần tử. (Toán tử
for i=1:3
    fprintf('%i\n',i)
end
3, có sẵn từ Python 3.5, có thể được sử dụng để nhân ma trận thông thường.)n-dimensional arrays with the minimum type required to hold the objects in sequence, unless you specify the number of dimensions and type. NumPy performs operations element-by-element, so multiplying 2D arrays with
for i=1:3
    fprintf('%i\n',i)
end
2 is not a matrix multiplication – it’s an element-by-element multiplication. (The
for i=1:3
    fprintf('%i\n',i)
end
3 operator, available since Python 3.5, can be used for conventional matrix multiplication.)

Số lượng MATLAB Chỉ số từ 1;

for i=1:3
    fprintf('%i\n',i)
end
4 là yếu tố đầu tiên. Xem LƯU Ý LƯU ÝSee note INDEXING

Numpy, như Python, số chỉ số từ 0;

for i=1:3
    fprintf('%i\n',i)
end
5 là yếu tố đầu tiên.

Ngôn ngữ kịch bản MATLAB, được tạo ra cho đại số tuyến tính nên cú pháp cho một số thao tác mảng nhỏ gọn hơn Numpy. Mặt khác, API để thêm GUI và tạo các ứng dụng chính thức là ít nhiều là một suy nghĩ lại.

Numpy dựa trên Python, một ngôn ngữ đa năng. Ưu điểm của Numpy là truy cập vào các thư viện Python bao gồm: Scipy, Matplotlib, Pandas, OpenCV, v.v. Ngoài ra, Python thường được nhúng như một ngôn ngữ kịch bản trong phần mềm khác, cho phép sử dụng Numpy ở đó.

Cắt mảng Matlab sử dụng ngữ nghĩa qua từng giá trị, với sơ đồ sao chép lười viết để ngăn chặn việc tạo bản sao cho đến khi chúng cần thiết. Cắt các hoạt động sao chép các phần của mảng.

Cắt mảng Numpy sử dụng từng tham chiếu, không sao chép các đối số. Các hoạt động cắt lát là các chế độ xem thành một mảng.

Tương đương thô#

Bảng dưới đây cung cấp tương đương thô cho một số biểu thức MATLAB phổ biến. Đây là những biểu thức tương tự, không tương đương. Để biết chi tiết, xem tài liệu.documentation.

Trong bảng bên dưới, người ta cho rằng bạn đã thực thi các lệnh sau trong Python:

import numpy as np
from scipy import io, integrate, linalg, signal
from scipy.sparse.linalg import eigs

Cũng giả sử bên dưới rằng nếu các ghi chú nói về ma trận ma trận rằng các đối số là các thực thể hai chiều.

Mục đích chung tương đương#

Matlab

Numpy

Ghi chú

for i=1:3
    fprintf('%i\n',i)
end
6

for i=1:3
    fprintf('%i\n',i)
end
7 hoặc
for i=1:3
    fprintf('%i\n',i)
end
8 hoặc
for i=1:3
    fprintf('%i\n',i)
end
9 (trong ipython)

Nhận trợ giúp về chức năng Func

for i in range(1, 4):
   print(i)
0

Xem ghi chú trợ giúp

Tìm ra nơi func được xác định

for i in range(1, 4):
   print(i)
1

for i in range(1, 4):
   print(i)
2 hoặc
for i in range(1, 4):
   print(i)
3 (trong ipython)

Nguồn in cho func (nếu không phải là hàm gốc)

for i in range(1, 4):
   print(i)
4

for i in range(1, 4):
   print(i)
5

Nhận xét một dòng mã với văn bản

for i in range(1, 4):
   print(i)
6

for i=1:3
    fprintf('%i\n',i)
end

for i in range(1, 4):
   print(i)

Sử dụng vòng lặp để in các số 1, 2 và 3 bằng cách sử dụng

for i in range(1, 4):
   print(i)
7

for i in range(1, 4):
   print(i)
8

for i in range(1, 4):
   print(i)
9

logic và toán tử ngắn mạch (toán tử gốc Python); Chỉ đối số vô hướngPython native operator); scalar arguments only

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
0

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
1

logic hoặc toán tử ngắn mạch (toán tử gốc Python); Chỉ đối số vô hướngPython native operator); scalar arguments only

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0

>>> 4 == 4
True
>>> 4 == 5
False

Các đối tượng boolean trong Python là

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
2 và
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
3, trái ngược với các loại logic MATLAB của
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
4 và
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
5.boolean objects in Python are
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
2 and
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
3, as opposed to MATLAB logical types of
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
4 and
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
5.

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')

Tạo câu lệnh if-else để kiểm tra xem

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 là 4 hoặc 5 và kết quả in

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
7,
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
8,
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
9,
>>> 4 == 4
True
>>> 4 == 5
False
0

>>> 4 == 4
True
>>> 4 == 5
False
0

số phức

>>> 4 == 4
True
>>> 4 == 5
False
2

>>> 4 == 4
True
>>> 4 == 5
False
3 hoặc
>>> 4 == 4
True
>>> 4 == 5
False
4

Giới hạn trên với lỗi tương đối do làm tròn trong số học điểm nổi 64 bit.

>>> 4 == 4
True
>>> 4 == 5
False
5

>>> 4 == 4
True
>>> 4 == 5
False
6

Tải các biến MATLAB được lưu vào tệp

>>> 4 == 4
True
>>> 4 == 5
False
7. .

a=4
if a==4
    fprintf('a = 4\n')
elseif a==5
    fprintf('a = 5\n')
end
0

a=4
if a==4
    fprintf('a = 4\n')
elseif a==5
    fprintf('a = 5\n')
end
1

Tích hợp một ode với Runge-Kutta 4,5

a=4
if a==4
    fprintf('a = 4\n')
elseif a==5
    fprintf('a = 5\n')
end
2

a=4
if a==4
    fprintf('a = 4\n')
elseif a==5
    fprintf('a = 5\n')
end
3

Tích hợp một ode với phương pháp BDF

Tương đương đại số tuyến tính#

Matlab

Numpy

Ghi chú

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

for i=1:3
    fprintf('%i\n',i)
end
7 hoặc
for i=1:3
    fprintf('%i\n',i)
end
8 hoặc
for i=1:3
    fprintf('%i\n',i)
end
9 (trong ipython)

Nhận trợ giúp về chức năng Func

a=4
if a==4
    fprintf('a = 4\n')
elseif a==5
    fprintf('a = 5\n')
end
8

Xem ghi chú trợ giúp

Tìm ra nơi func được xác định

a = 4
if a == 4:
    print('a = 4')
elif a == 5:
    print('a = 5')
2

for i in range(1, 4):
   print(i)
2 hoặc
for i in range(1, 4):
   print(i)
3 (trong ipython)

Nguồn in cho func (nếu không phải là hàm gốc)

a = 4
if a == 4:
    print('a = 4')
elif a == 5:
    print('a = 5')
6

a = 4
if a == 4:
    print('a = 4')
elif a == 5:
    print('a = 5')
7

Nhận xét một dòng mã với văn bản

for i in range(1, 4):
   print(i)
6INDEXING)

a = 4
if a == 4:
    print('a = 4')
elif a == 5:
    print('a = 5')
9

rng(42,'twister')
rand(3,4)
0

Sử dụng vòng lặp để in các số 1, 2 và 3 bằng cách sử dụng

for i in range(1, 4):
   print(i)
7

rng(42,'twister')
rand(3,4)
1

rng(42,'twister')
rand(3,4)
2

logic và toán tử ngắn mạch (toán tử gốc Python); Chỉ đối số vô hướng

rng(42,'twister')
rand(3,4)
7

rng(42,'twister')
rand(3,4)
8

logic hoặc toán tử ngắn mạch (toán tử gốc Python); Chỉ đối số vô hướng

from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)
0

from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)
1

Phần tử truy cập ở hàng thứ hai, cột thứ năm trong mảng 2D

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

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

from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)
4 hoặc
from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)
5

Toàn bộ hàng thứ hai của mảng 2D

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)
7

from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)
8 hoặc
from numpy.random import default_rng
rng = default_rng(42)
rng.random(3, 4)
9 hoặc
# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian
0

5 hàng đầu tiên của mảng 2D

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian
2

# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian
3

5 hàng cuối cùng của mảng 2D

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian
5

# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian
6

Các hàng thứ nhất đến thứ ba và các cột thứ năm đến thứ chín của mảng 2D,

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6.

# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian
8

# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian
9

Hàng 2,4 và 5 và cột 1 và 3. Điều này cho phép ma trận được sửa đổi và không yêu cầu một lát cắt thông thường.

for i=1:3
    fprintf('%i\n',i)
end
00

for i=1:3
    fprintf('%i\n',i)
end
01

Mỗi hàng khác của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6, bắt đầu với hàng thứ ba và đi đến lần thứ hai mươi mốt

for i=1:3
    fprintf('%i\n',i)
end
03

for i=1:3
    fprintf('%i\n',i)
end
04

mọi hàng khác của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6, bắt đầu với hàng đầu tiên

for i=1:3
    fprintf('%i\n',i)
end
06 hoặc
for i=1:3
    fprintf('%i\n',i)
end
07

for i=1:3
    fprintf('%i\n',i)
end
08

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 với các hàng theo thứ tự ngược lại

for i=1:3
    fprintf('%i\n',i)
end
10

for i=1:3
    fprintf('%i\n',i)
end
11

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 với bản sao của hàng đầu tiên được thêm vào cuối

for i=1:3
    fprintf('%i\n',i)
end
13

for i=1:3
    fprintf('%i\n',i)
end
14 hoặc
for i=1:3
    fprintf('%i\n',i)
end
15

Chuyển đổi

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i=1:3
    fprintf('%i\n',i)
end
17

for i=1:3
    fprintf('%i\n',i)
end
18 hoặc
for i=1:3
    fprintf('%i\n',i)
end
19

liên hợp chuyển đổi

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i=1:3
    fprintf('%i\n',i)
end
21

for i=1:3
    fprintf('%i\n',i)
end
22

Ma trận nhân

for i=1:3
    fprintf('%i\n',i)
end
23

for i=1:3
    fprintf('%i\n',i)
end
21

Phần tử khôn ngoan nhân

for i=1:3
    fprintf('%i\n',i)
end
25

for i=1:3
    fprintf('%i\n',i)
end
26

chia phần yếu tố phân chia

for i=1:3
    fprintf('%i\n',i)
end
27

for i=1:3
    fprintf('%i\n',i)
end
28

Phần tử khôn ngoan

for i=1:3
    fprintf('%i\n',i)
end
29

for i=1:3
    fprintf('%i\n',i)
end
29

Ma trận có phần tử i, thứ j là (a_ij> 0,5). Kết quả MATLAB là một mảng của các giá trị logic 0 và 1. Kết quả numpy là một mảng của các giá trị boolean

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
3 và
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
2.

for i=1:3
    fprintf('%i\n',i)
end
33

for i=1:3
    fprintf('%i\n',i)
end
34

Tìm các chỉ số trong đó (

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6> 0,5)

for i=1:3
    fprintf('%i\n',i)
end
36

for i=1:3
    fprintf('%i\n',i)
end
37

Trích xuất các cột của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 trong đó vector v> 0,5

for i=1:3
    fprintf('%i\n',i)
end
39

for i=1:3
    fprintf('%i\n',i)
end
40

Trích xuất các cột của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 trong đó vectơ cột V> 0,5

for i=1:3
    fprintf('%i\n',i)
end
42

for i=1:3
    fprintf('%i\n',i)
end
43

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 với các yếu tố nhỏ hơn 0,5 không có

for i=1:3
    fprintf('%i\n',i)
end
45

for i=1:3
    fprintf('%i\n',i)
end
46

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 với các yếu tố nhỏ hơn 0,5 không có

for i=1:3
    fprintf('%i\n',i)
end
48

for i=1:3
    fprintf('%i\n',i)
end
49

Đặt tất cả các giá trị thành cùng một giá trị vô hướng

for i=1:3
    fprintf('%i\n',i)
end
50

for i=1:3
    fprintf('%i\n',i)
end
51

Gán Numpy bằng cách tham khảo

for i=1:3
    fprintf('%i\n',i)
end
52

for i=1:3
    fprintf('%i\n',i)
end
53

Các lát cắt không có tài liệu tham khảo

for i=1:3
    fprintf('%i\n',i)
end
54

for i=1:3
    fprintf('%i\n',i)
end
55

Biến mảng thành vector (lưu ý rằng điều này buộc một bản sao). Để có được thứ tự dữ liệu tương tự như trong MATLAB, hãy sử dụng

for i=1:3
    fprintf('%i\n',i)
end
56.

for i=1:3
    fprintf('%i\n',i)
end
57

for i=1:3
    fprintf('%i\n',i)
end
58 hoặc
for i=1:3
    fprintf('%i\n',i)
end
59 hoặc
for i=1:3
    fprintf('%i\n',i)
end
60

Tạo một vectơ ngày càng tăng (xem phạm vi ghi chú)RANGES)

for i=1:3
    fprintf('%i\n',i)
end
61

for i=1:3
    fprintf('%i\n',i)
end
62 hoặc
for i=1:3
    fprintf('%i\n',i)
end
63 hoặc
for i=1:3
    fprintf('%i\n',i)
end
64

Tạo một vectơ ngày càng tăng (xem phạm vi ghi chú)RANGES)

for i=1:3
    fprintf('%i\n',i)
end
65

for i=1:3
    fprintf('%i\n',i)
end
66

for i=1:3
    fprintf('%i\n',i)
end
62 hoặc
for i=1:3
    fprintf('%i\n',i)
end
63 hoặc
for i=1:3
    fprintf('%i\n',i)
end
64

for i=1:3
    fprintf('%i\n',i)
end
67

for i=1:3
    fprintf('%i\n',i)
end
68

Tạo một vectơ cột

for i=1:3
    fprintf('%i\n',i)
end
69

for i=1:3
    fprintf('%i\n',i)
end
70

Mảng hai chiều 3x4 đầy đủ các số điểm nổi 64 bit

for i=1:3
    fprintf('%i\n',i)
end
71

for i=1:3
    fprintf('%i\n',i)
end
72

Mảng ba chiều 3x4x5 đầy đủ các số không nổi 64 bit không

for i=1:3
    fprintf('%i\n',i)
end
73

for i=1:3
    fprintf('%i\n',i)
end
74

Mảng hai chiều 3x4 đầy đủ các điểm nổi 64 bit

for i=1:3
    fprintf('%i\n',i)
end
75

for i=1:3
    fprintf('%i\n',i)
end
76

Ma trận nhận dạng 3x3

for i=1:3
    fprintf('%i\n',i)
end
78

for i=1:3
    fprintf('%i\n',i)
end
79

Trả về một vectơ của các phần tử chéo của mảng 2D,

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

rng(42,'twister')
rand(3,4)

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

Trả về một ma trận đường chéo vuông có giá trị khác là các phần tử của vectơ,

for i=1:3
    fprintf('%i\n',i)
end
80

hoặc phiên bản cũ hơn:

for i=1:3
    fprintf('%i\n',i)
end
81

for i=1:3
    fprintf('%i\n',i)
end
82

for i=1:3
    fprintf('%i\n',i)
end
83

Tạo một mảng 3x4 ngẫu nhiên với trình tạo số ngẫu nhiên mặc định và hạt giống = 42

for i=1:3
    fprintf('%i\n',i)
end
84

4 mẫu cách đều nhau từ 1 đến 3, bao gồm

for i=1:3
    fprintf('%i\n',i)
end
85 hoặc
for i=1:3
    fprintf('%i\n',i)
end
86

Hai mảng 2D: một trong các giá trị x, các giá trị khác của y

for i=1:3
    fprintf('%i\n',i)
end
87 hoặc
for i=1:3
    fprintf('%i\n',i)
end
88

for i=1:3
    fprintf('%i\n',i)
end
89

for i=1:3
    fprintf('%i\n',i)
end
90

for i=1:3
    fprintf('%i\n',i)
end
91

for i=1:3
    fprintf('%i\n',i)
end
87 hoặc
for i=1:3
    fprintf('%i\n',i)
end
88

for i=1:3
    fprintf('%i\n',i)
end
92

for i=1:3
    fprintf('%i\n',i)
end
93

Cách tốt nhất để đánh giá các chức năng trên lưới

for i=1:3
    fprintf('%i\n',i)
end
95

Tạo M bởi N bản sao của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i=1:3
    fprintf('%i\n',i)
end
96 hoặc
for i=1:3
    fprintf('%i\n',i)
end
97 hoặc
for i=1:3
    fprintf('%i\n',i)
end
98 hoặc
for i=1:3
    fprintf('%i\n',i)
end
99

for i in range(1, 4):
   print(i)
02

Các cột Concatenate của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 và
rng(42,'twister')
rand(3,4)
4

for i in range(1, 4):
   print(i)
03 hoặc
for i in range(1, 4):
   print(i)
04 hoặc
for i in range(1, 4):
   print(i)
05

for i in range(1, 4):
   print(i)
08

Các hàng Concatenate của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 và
rng(42,'twister')
rand(3,4)
4

for i in range(1, 4):
   print(i)
09 hoặc
for i in range(1, 4):
   print(i)
10

for i in range(1, 4):
   print(i)
13

for i in range(1, 4):
   print(i)
14

Phần tử tối đa của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 (với NDIMS (A)

for i in range(1, 4):
   print(i)
16

for i in range(1, 4):
   print(i)
17

Phần tử tối đa của mỗi cột của mảng

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
19

for i in range(1, 4):
   print(i)
20

Phần tử tối đa của mỗi hàng mảng

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
23

So sánh phần tử

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 và
rng(42,'twister')
rand(3,4)
4 và trả về giá trị tối đa từ mỗi cặp

for i in range(1, 4):
   print(i)
24 hoặc
for i in range(1, 4):
   print(i)
25

for i in range(1, 4):
   print(i)
27

for i in range(1, 4):
   print(i)
28

Định mức L2 của vector

for i=1:3
    fprintf('%i\n',i)
end
80See note LOGICOPS

for i in range(1, 4):
   print(i)
29

for i in range(1, 4):
   print(i)
30

Từng phần tử và toán tử (Numpy UFUNC) Xem logicops Lưu ýSee note LOGICOPS

for i in range(1, 4):
   print(i)
31

for i in range(1, 4):
   print(i)
27

Từng phần tử hoặc toán tử (Numpy UFUNC) Xem logicops Lưu ý

for i in range(1, 4):
   print(i)
33

for i in range(1, 4):
   print(i)
29

BitWise và toán tử (Python bản địa và UFUNC NUMPY)

for i in range(1, 4):
   print(i)
35

for i in range(1, 4):
   print(i)
36

BitWise hoặc toán tử (Python bản địa và UFUNC NUMPY)

for i in range(1, 4):
   print(i)
38

for i in range(1, 4):
   print(i)
39

nghịch đảo của mảng 2D vuông

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
41

for i in range(1, 4):
   print(i)
42

Pseudo Converse của mảng 2D

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
44

Xếp hạng ma trận của một mảng 2D

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
45 nếu
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 là hình vuông;
for i in range(1, 4):
   print(i)
47 khác

for i in range(1, 4):
   print(i)
48

Giải pháp của a x = b cho x

Giải quyết

for i in range(1, 4):
   print(i)
49 thay thế

for i in range(1, 4):
   print(i)
50

for i in range(1, 4):
   print(i)
51

Phân hủy giá trị đơn lẻ của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
53 trong đó
for i in range(1, 4):
   print(i)
54

for i in range(1, 4):
   print(i)
55 trong đó
for i in range(1, 4):
   print(i)
56

Yếu tố cholesky của một mảng 2D (

for i in range(1, 4):
   print(i)
57 trong MATLAB trả về một mảng 2D hình tam giác trên, nhưng
for i in range(1, 4):
   print(i)
58 trả về một mảng 2D hình tam giác dưới)

for i in range(1, 4):
   print(i)
59

for i in range(1, 4):
   print(i)
60

eigenvalues ​​\ (\ lambda \) và eigenvector \ (\ bar {v} \) của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6, trong đó\(\lambda\) and eigenvectors \(\bar{v}\) of
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6, where \(\lambda\bar{v}=\mathbf{a}\bar{v}\)

for i in range(1, 4):
   print(i)
62

for i in range(1, 4):
   print(i)
63

eigenValues ​​\ (\ lambda \) và eigenvector \ (\ bar {v} \) của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6,
rng(42,'twister')
rand(3,4)
4 trong đó \ (\ lambda \ mathbf {b} \ bar\(\lambda\) and eigenvectors \(\bar{v}\) of
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6,
rng(42,'twister')
rand(3,4)
4 where \(\lambda\mathbf{b}\bar{v}=\mathbf{a}\bar{v}\)

for i in range(1, 4):
   print(i)
66

for i in range(1, 4):
   print(i)
67

Tìm các giá trị riêng lớn nhất ____268 và các hàm riêng của mảng 2D,

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
70

for i in range(1, 4):
   print(i)
71

Phân hủy QR

for i in range(1, 4):
   print(i)
72 trong đó
for i in range(1, 4):
   print(i)
73

for i in range(1, 4):
   print(i)
74 trong đó
for i in range(1, 4):
   print(i)
75

Phân hủy LU (Lưu ý: P (MATLAB) == Chuyển đổi (P (Numpy))))

for i in range(1, 4):
   print(i)
76

for i in range(1, 4):
   print(i)
77

Giải quyết liên hợp

for i in range(1, 4):
   print(i)
78

for i in range(1, 4):
   print(i)
79

Biến đổi Fourier của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
81

for i in range(1, 4):
   print(i)
82

biến đổi Fourier nghịch đảo của

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
84

for i in range(1, 4):
   print(i)
85 hoặc
for i in range(1, 4):
   print(i)
86

Sắp xếp từng cột của một mảng 2D,

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
88

for i in range(1, 4):
   print(i)
89 hoặc
for i in range(1, 4):
   print(i)
90

Sắp xếp từng hàng của mảng 2D,

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

for i in range(1, 4):
   print(i)
92

for i in range(1, 4):
   print(i)
93

Lưu mảng

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6 dưới dạng mảng
rng(42,'twister')
rand(3,4)
4 với các hàng được sắp xếp theo cột đầu tiên

for i in range(1, 4):
   print(i)
96

for i in range(1, 4):
   print(i)
97

Thực hiện hồi quy tuyến tính của biểu mẫu \ (\ mathbf {zx} = \ mathbf {y} \)\(\mathbf{Zx}=\mathbf{y}\)

for i in range(1, 4):
   print(i)
98

for i in range(1, 4):
   print(i)
99

Downsample với bộ lọc thông thấp

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
00

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
01

Một vectơ của các giá trị duy nhất trong mảng

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
03

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
04

Tháo kích thước singleton của mảng

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6. Lưu ý rằng MATLAB sẽ luôn trả lại các mảng từ 2d trở lên trong khi Numpy sẽ trả lại các mảng từ 0d hoặc cao hơn

Notes#

Submatrix: Gán cho Submatrix có thể được thực hiện với danh sách các chỉ số bằng lệnh

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
06. Ví dụ: đối với mảng 2D
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6, người ta có thể làm:
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
08.
: Assignment to a submatrix can be done with lists of indices using the
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
06 command. E.g., for 2D array
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
6, one might do:
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
08.

Trợ giúp: Không có tương đương trực tiếp của lệnh MATLAB từ

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
09, nhưng các lệnh
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
10 và
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
11 thường sẽ liệt kê tên tệp nơi đặt hàm. Python cũng có mô -đun
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
12 (DO
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
13) cung cấp một
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
14 thường hoạt động.
: There is no direct equivalent of MATLAB’s
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
09 command, but the commands
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
10 and
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
11 will usually list the filename where the function is located. Python also has an
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
12 module (do
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
13) which provides a
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
14 that often works.

Lập chỉ mục: MATLAB sử dụng một chỉ mục dựa trên một, do đó, phần tử ban đầu của chuỗi có chỉ số 1. Python sử dụng lập chỉ mục dựa trên số 0, do đó, phần tử ban đầu của chuỗi có chỉ số 0. Sự nhầm lẫn và ngọn lửa phát sinh vì mỗi phần đều có ưu điểm và nhược điểm. Lập chỉ mục dựa trên một chỉ số phù hợp với việc sử dụng ngôn ngữ phổ biến của con người, trong đó phần tử đầu tiên của một chuỗi có chỉ số 1. Lập chỉ mục dựa trên không đơn giản hóa việc lập chỉ mục. Xem thêm một văn bản của Giáo sư.Dr. Edsger W. Dijkstra.: MATLAB uses one based indexing, so the initial element of a sequence has index 1. Python uses zero based indexing, so the initial element of a sequence has index 0. Confusion and flamewars arise because each has advantages and disadvantages. One based indexing is consistent with common human language usage, where the “first” element of a sequence has index 1. Zero based indexing simplifies indexing. See also a text by prof.dr. Edsger W. Dijkstra.

Phạm vi: Trong MATLAB,

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
15 có thể được sử dụng làm cả một phạm vi theo nghĩa đen và chỉ số ‘lát cắt (dấu ngoặc đơn); Tuy nhiên, trong Python, các cấu trúc như
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
15 chỉ có thể được sử dụng làm chỉ số lát cắt (bên trong ngoặc vuông). Do đó, đối tượng hơi kỳ quặc
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
17 đã được tạo ra để cho phép Numpy có cơ chế xây dựng phạm vi tương tự. Lưu ý rằng
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
17 không được gọi là hàm hoặc hàm tạo, mà là được lập chỉ mục bằng cách sử dụng dấu ngoặc vuông, cho phép sử dụng cú pháp lát cắt Python trong các đối số.
: In MATLAB,
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
15 can be used as both a range literal and a ‘slice’ index (inside parentheses); however, in Python, constructs like
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
15 can only be used as a slice index (inside square brackets). Thus the somewhat quirky
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
17 object was created to allow NumPy to have a similarly terse range construction mechanism. Note that
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
17 is not called like a function or a constructor, but rather indexed using square brackets, which allows the use of Python’s slice syntax in the arguments.

LogicOps:

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
19 hoặc
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20 trong Numpy là bitwise và/hoặc, trong khi ở Matlab & và
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20 là logic và/hoặc. Cả hai có thể làm việc giống nhau, nhưng có những khác biệt quan trọng. Nếu bạn đã sử dụng các toán tử MATLAB từ
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
19 hoặc
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20, bạn nên sử dụng UFUNCS Numpy ________ 324/________ 325. Sự khác biệt đáng chú ý giữa các toán tử MATLAB, và Numpy,
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
19 và
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20 là:
:
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
19 or
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20 in NumPy is bitwise AND/OR, while in MATLAB & and
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20 are logical AND/OR. The two can appear to work the same, but there are important differences. If you would have used MATLAB’s
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
19 or
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20 operators, you should use the NumPy ufuncs
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
24/
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
25. The notable differences between MATLAB’s and NumPy’s
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
19 and
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
20 operators are:

  • Đầu vào không logic {0,1}: Đầu ra Numpy là bitwise và của các đầu vào. MATLAB coi bất kỳ giá trị khác không là 1 và trả về logic và. Ví dụ

    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    28 trong Numpy là
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    5, trong khi ở Matlab cả
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    30 và
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    31 được coi là đúng logic và
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    28 trả về
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    4.

  • Ưu tiên: Nhà điều hành Numpy và được ưu tiên cao hơn các toán tử logic như

    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    34 và
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    35; Matlab sườn là điều ngược lại.

Nếu bạn biết bạn có các đối số Boolean, bạn có thể thoát khỏi việc sử dụng các toán tử bitwise Numpy, nhưng hãy cẩn thận với dấu ngoặc đơn, như thế này:

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
36. Sự vắng mặt của các hình thức vận hành numpy của
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
24 và
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
25 là một hậu quả đáng tiếc của thiết kế Python.

Đổi lại và lập chỉ mục tuyến tính: MATLAB luôn cho phép các mảng đa chiều được truy cập bằng cách sử dụng các chỉ số vô hướng hoặc tuyến tính, Numpy thì không. Các chỉ số tuyến tính là phổ biến trong các chương trình MATLAB, ví dụ:

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
39 trên một ma trận trả lại chúng, trong khi Numpy, thấy hành xử khác nhau. Khi chuyển đổi mã MATLAB, có thể cần phải định hình lại một ma trận thành một chuỗi tuyến tính, thực hiện một số thao tác lập chỉ mục và sau đó định hình lại. Vì định hình lại (thường) tạo ra các chế độ xem lên cùng một bộ lưu trữ, nên có thể thực hiện điều này khá hiệu quả. Lưu ý rằng thứ tự quét được sử dụng bằng cách định hình lại theo mặc định numpy theo thứ tự ‘C, trong khi Matlab sử dụng thứ tự Fortran. Nếu bạn chỉ đơn giản là chuyển đổi thành một chuỗi tuyến tính và trở lại điều này không quan trọng. Nhưng nếu bạn đang chuyển đổi định hình lại từ mã MATLAB dựa trên thứ tự quét, thì mã MATLAB này:
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
40 sẽ trở thành
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
41 trong Numpy.
: MATLAB always allows multi-dimensional arrays to be accessed using scalar or linear indices, NumPy does not. Linear indices are common in MATLAB programs, e.g.
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
39 on a matrix returns them, whereas NumPy’s find behaves differently. When converting MATLAB code it might be necessary to first reshape a matrix to a linear sequence, perform some indexing operations and then reshape back. As reshape (usually) produces views onto the same storage, it should be possible to do this fairly efficiently. Note that the scan order used by reshape in NumPy defaults to the ‘C’ order, whereas MATLAB uses the Fortran order. If you are simply converting to a linear sequence and back this doesn’t matter. But if you are converting reshapes from MATLAB code which relies on the scan order, then this MATLAB code:
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
40 should become
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
41 in NumPy.

Array Array hay ‘Matrix Matrix? Tôi nên sử dụng cái nào?#

Trong lịch sử, Numpy đã cung cấp một loại ma trận đặc biệt, NP.Matrix, là một lớp con của Ndarray, tạo ra các hoạt động hoạt động nhị phân. Bạn có thể thấy nó được sử dụng trong một số mã hiện có thay vì np.array. Vì vậy, cái nào để sử dụng?

Câu trả lời ngắn#

Sử dụng mảng..

  • Họ hỗ trợ đại số mảng đa chiều được hỗ trợ trong MATLAB

  • Chúng là loại vectơ/ma trận/tenxơ tiêu chuẩn. Nhiều chức năng numpy trả về mảng, không phải ma trận.

  • Có một sự khác biệt rõ ràng giữa các hoạt động của phần tử khôn ngoan và các hoạt động đại số tuyến tính.

  • Bạn có thể có vectơ tiêu chuẩn hoặc vectơ hàng/cột nếu bạn thích.

Cho đến Python 3.5, nhược điểm duy nhất của việc sử dụng loại mảng là bạn phải sử dụng

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
42 thay vì
for i=1:3
    fprintf('%i\n',i)
end
2 để nhân (giảm) hai tenxor (sản phẩm vô hướng, phép nhân vectơ ma trận, v.v.). Vì Python 3.5, bạn có thể sử dụng toán tử nhân Matrix
for i=1:3
    fprintf('%i\n',i)
end
3.

Với những điều trên, cuối cùng chúng tôi dự định sẽ phản đối

>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
45.

Câu trả lời dài#

Numpy chứa cả lớp

for i=1:3
    fprintf('%i\n',i)
end
1 và lớp
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
45. Lớp
for i=1:3
    fprintf('%i\n',i)
end
1 được dự định là một mảng N chiều đa năng cho nhiều loại tính toán số, trong khi
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
45 được dự định để tạo điều kiện cho các tính toán đại số tuyến tính cụ thể. Trong thực tế chỉ có một số ít khác biệt chính giữa hai.

  • Các nhà khai thác

    for i=1:3
        fprintf('%i\n',i)
    end
    
    2 và
    for i=1:3
        fprintf('%i\n',i)
    end
    
    3, chức năng
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    52 và
    >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    53:

    • Đối với

      for i=1:3
          fprintf('%i\n',i)
      end
      
      1, ``*`` có nghĩa là phép nhân theo yếu tố, trong khi ``@`` có nghĩa là phép nhân ma trận; Chúng có các chức năng liên quan
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      53 và
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      52. (Trước Python 3.5,
      for i=1:3
          fprintf('%i\n',i)
      end
      
      3 không tồn tại và người ta phải sử dụng
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      52 để nhân ma trận).``*`` means element-wise multiplication, while ``@`` means matrix multiplication; they have associated functions
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      53 and
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      52. (Before Python 3.5,
      for i=1:3
          fprintf('%i\n',i)
      end
      
      3 did not exist and one had to use
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      52 for matrix multiplication).

    • Đối với

      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      45, ``*`` có nghĩa là phép nhân ma trận và đối với phép nhân theo phần tử, người ta phải sử dụng hàm
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      53.``*`` means matrix multiplication, and for element-wise multiplication one has to use the
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      53 function.

  • Xử lý các vectơ (mảng một chiều)

    • Đối với

      for i=1:3
          fprintf('%i\n',i)
      end
      
      1, vector hình thành 1XN, NX1 và N đều là những thứ khác nhau. Các hoạt động như
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      62 Trả về một mảng một chiều của hình n, không phải là một mảng hình dạng hai chiều NX1. Chuyển đổi trên một
      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 một chiều không làm gì cả.vector shapes 1xN, Nx1, and N are all different things. Operations like
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      62 return a one-dimensional array of shape N, not a two-dimensional array of shape Nx1. Transpose on a one-dimensional
      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 does nothing.

    • Đối với

      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      45, các mảng một chiều luôn được đảo ngược thành ma trận 1XN hoặc NX1 (vectơ hàng hoặc cột).
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      62 Trả về một ma trận hai chiều của hình dạng NX1.one-dimensional arrays are always upconverted to 1xN or Nx1 matrices (row or column vectors).
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      62 returns a two-dimensional matrix of shape Nx1.

  • Xử lý các mảng chiều cao hơn (NDIM> 2)

    • Đối tượng

      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 có thể có số lượng kích thước> 2;can have number of dimensions > 2;

    • Đối tượng

      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      45 luôn có chính xác hai chiều.always have exactly two dimensions.

  • Thuộc tính thuận tiện

    • for i=1:3
          fprintf('%i\n',i)
      end
      
      1 có thuộc tính .t, trả về chuyển đổi của dữ liệu.has a .T attribute, which returns the transpose of the data.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      45 cũng có các thuộc tính .h, .i và .a, trả về lần lượt chuyển đổi liên hợp, nghịch đảo và
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      70 của ma trận.also has .H, .I, and .A attributes, which return the conjugate transpose, inverse, and
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      70 of the matrix, respectively.

  • Nhà xây dựng thuận tiện

    • Chất xây dựng

      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 lấy các chuỗi python (lồng nhau) như các trình khởi tạo. Như trong,
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      72.takes (nested) Python sequences as initializers. As in,
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      72.

    • Trình xây dựng

      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      45 cũng có trình khởi tạo chuỗi thuận tiện. Như trong
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      74.takes a convenient string initializer. As in
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      74.

Có những ưu và nhược điểm để sử dụng cả hai:

  • for i=1:3
        fprintf('%i\n',i)
    end
    
    1

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      76 phép nhân theo yếu tố là dễ dàng:
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      77.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      78 Bạn phải nhớ rằng phép nhân ma trận có toán tử riêng,
      for i=1:3
          fprintf('%i\n',i)
      end
      
      3.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      76 Bạn có thể coi các mảng một chiều là vectơ hàng hoặc cột.
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      81 coi
      for i=1:3
          fprintf('%i\n',i)
      end
      
      80 là một vectơ cột, trong khi
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      83 coi
      for i=1:3
          fprintf('%i\n',i)
      end
      
      80 là một vectơ hàng. Điều này có thể giúp bạn tiết kiệm phải gõ nhiều chuyển đổi.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      76
      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 là loại mặc định của người Viking, do đó, nó được thử nghiệm nhiều nhất và là loại có khả năng được trả lại bởi mã bên thứ 3 sử dụng Numpy.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      76 là dữ liệu xử lý tại nhà của bất kỳ số lượng kích thước nào.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      76 Gần hơn trong ngữ nghĩa để tăng đại số, nếu bạn quen thuộc với điều đó.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      76 Tất cả các hoạt động (
      for i=1:3
          fprintf('%i\n',i)
      end
      
      2,
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      91,
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      92,
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      93, v.v.) là yếu tố khôn ngoan.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      78 Ma trận thưa thớt từ
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      95 cũng không tương tác với các mảng.

  • >> 4 == 4
    ans = 1
    >> 4 == 5
    ans = 0
    
    45

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      97 Hành vi giống như của ma trận MATLAB.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      98 Tối đa hai chiều. Để giữ dữ liệu ba chiều, bạn cần
      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 hoặc có lẽ là danh sách Python của
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      45.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      98 Tối thiểu hai chiều. Bạn không thể có vectơ. Chúng phải được đúc thành ma trận một cột hoặc một hàng.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      98 Vì
      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 là mặc định trong Numpy, một số chức năng có thể trả về
      for i=1:3
          fprintf('%i\n',i)
      end
      
      1 ngay cả khi bạn cung cấp cho họ
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      45 như một đối số. Điều này không nên xảy ra với các chức năng Numpy (nếu nó thực hiện một lỗi), nhưng mã của bên thứ 3 dựa trên Numpy có thể không tôn trọng bảo tồn loại như Numpy.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      76
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      77 là phép nhân ma trận, do đó, có vẻ như bạn viết nó bằng đại số tuyến tính (đối với Python> = 3.5 mảng đơn giản có cùng một tiện lợi với toán tử
      for i=1:3
          fprintf('%i\n',i)
      end
      
      3).

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      98 Nhân tập hợp yếu tố yêu cầu gọi một hàm,
      >>> 4 == 4
      True
      >>> 4 == 5
      False
      
      10.

    • >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      98 Việc sử dụng quá tải toán tử là một chút phi logic:
      for i=1:3
          fprintf('%i\n',i)
      end
      
      2 không hoạt động theo yếu tố nhưng
      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      91 thì có.

    • Tương tác với

      >> 4 == 4
      ans = 1
      >> 4 == 5
      ans = 0
      
      95 là một chút sạch hơn.

Do đó,

for i=1:3
    fprintf('%i\n',i)
end
1 nên sử dụng hơn nhiều. Thật vậy, cuối cùng chúng tôi dự định sẽ không phản đối
>> 4 == 4
ans = 1
>> 4 == 5
ans = 0
45.

Tùy chỉnh môi trường của bạn#

Trong MATLAB, công cụ chính có sẵn cho bạn để tùy chỉnh môi trường là sửa đổi đường dẫn tìm kiếm với vị trí của các chức năng yêu thích của bạn. Bạn có thể đặt các tùy chỉnh như vậy vào một tập lệnh khởi động mà Matlab sẽ chạy khi khởi động.

Numpy, hay đúng hơn là Python, có các cơ sở tương tự.

  • Để sửa đổi đường dẫn tìm kiếm Python của bạn để bao gồm các vị trí của các mô -đun của riêng bạn, hãy xác định biến môi trường

    >>> 4 == 4
    True
    >>> 4 == 5
    False
    
    17.

  • Để có một tệp tập lệnh cụ thể được thực thi khi trình thông dịch python tương tác được bắt đầu, hãy xác định biến môi trường

    >>> 4 == 4
    True
    >>> 4 == 5
    False
    
    18 để chứa tên của tập lệnh khởi động của bạn.

Không giống như MATLAB, nơi mọi thứ trên đường dẫn của bạn có thể được gọi ngay lập tức, với Python, trước tiên bạn cần phải thực hiện một câu lệnh ’nhập’ để tạo các hàm trong một tệp cụ thể có thể truy cập được.

Ví dụ: bạn có thể tạo một tập lệnh khởi động trông như thế này (lưu ý: Đây chỉ là một ví dụ, không phải là một tuyên bố về thực tiễn tốt nhất của Hồi giáo):

# Make all numpy available via shorter 'np' prefix
import numpy as np
#
# Make the SciPy linear algebra functions available as linalg.func()
# e.g. linalg.lu, linalg.eig (for general l*[email protected][email protected] solution)
from scipy import linalg
#
# Define a Hermitian function
def hermitian(A, **kwargs):
    return np.conj(A,**kwargs).T
# Make a shortcut for hermitian:
#    hermitian(A) --> H(A)
H = hermitian

Để sử dụng ma trận không dùng nữa và các chức năng MATLIB khác:

for i=1:3
    fprintf('%i\n',i)
end
0

Links#

Một tham chiếu chéo Matlab/Numpy có phần lỗi thời khác có thể được tìm thấy tại http://mathesaurus.sf.net/

Một danh sách rộng lớn các công cụ cho công việc khoa học với Python có thể được tìm thấy trong trang phần mềm tại chỗ.

Xem danh sách phần mềm Python: Scripting cho danh sách phần mềm sử dụng Python làm ngôn ngữ kịch bản

MATLAB® và SIMULINK® là các nhãn hiệu đã đăng ký của MathWorks, Inc.

Matlab có tốt hơn Python không?

Cả Matlab và Python đều tốt cho người mới bắt đầu, nhưng Python tốt hơn nếu mã hóa hoặc khoa học máy tính là mục tiêu chính của bạn.

Matlab có giống với R hay Python không?

MATLAB có thể được sử dụng để dạy toán học giới thiệu như tính toán và thống kê.Cả Python và R có thể được sử dụng để đưa ra quyết định liên quan đến dữ liệu lớn.Một mặt, Python là hoàn hảo cho việc giảng dạy thống kê giới thiệu trong môi trường phong phú dữ liệu.Both Python and R can be used to make decisions involving big data. On the one hand, Python is perfect for teaching introductory statistics in a data rich environment.

Matlab tương tự như ngôn ngữ?

Python: Python [4] là một ngôn ngữ cấp cao khác và từ cái nhìn đầu tiên rất giống với MATLAB: Nó được giải thích, có một lời nhắc tương tác, cho phép gõ động và cung cấp quản lý bộ nhớ tự động (và đi kèm với các số phức tạp được xây dựng).: Python [4] is another high-level language and at first sight very similar to MATLAB: it is interpreted, has an interactive prompt, allows dynamic typing and provides automatic memory management (and comes with in-built complex numbers).