Mảng MATLAB trong Python

Chúng tôi biết rằng NumPy cung cấp cho chúng tôi các phương thức để duy trì dữ liệu ở định dạng có thể đọc được cho Python. Nhưng SciPy cũng cung cấp cho chúng tôi khả năng tương tác với Matlab

SciPy cung cấp cho chúng ta module scipy.io có chức năng làm việc với mảng Matlab

Xuất dữ liệu ở định dạng Matlab

Hàm savemat[] cho phép chúng ta xuất dữ liệu ra định dạng Matlab

Phương thức nhận các tham số sau

  1. tên tệp - tên tệp để lưu dữ liệu
  2. mdict - một từ điển chứa dữ liệu
  3. do_compression - một giá trị boolean chỉ định có nén kết quả hay không. Mặc định sai

Thí dụ

Xuất mảng sau dưới dạng tên biến "vec" sang tệp mat

từ scipy nhập io
nhập numpy dưới dạng np

mảng = np. sắp xếp[10]

io. savemat['mảng. mat', {"vec". mảng}]

Ghi chú. Ví dụ trên lưu tên tệp "arr. mat" trên máy tính của bạn

Để mở tệp, hãy xem ví dụ "Nhập dữ liệu từ định dạng Matlab" bên dưới

Nhập dữ liệu từ định dạng Matlab

Hàm loadmat[] cho phép chúng ta nhập dữ liệu từ tệp Matlab

Hàm nhận một tham số bắt buộc

tên tệp - tên tệp của dữ liệu đã lưu

Nó sẽ trả về một mảng có cấu trúc với các khóa là tên biến và các giá trị tương ứng là các giá trị của biến

Mức MATLAB/OctavePythonDescriptioncontour[z], colls = contour[Z, V,
nguồn gốc = 'hạ', mức độ = [-3,3, -3,3]]
clabel[cols, levels, inline=1,
fmt='%1. 1f', fontsize=10]Contour plotcontourf[z];
cmap=cm. xám,
nguồn gốc = 'thấp hơn',
phạm vi = [-3,3, -3,3]] Biểu đồ đường viền đầy [z]
colormap[xám]im = imshow[Z,
phép nội suy='song tuyến tính',
nguồn gốc = 'thấp hơn',
extent=[-3,3,-3,3]] Vẽ dữ liệu hình ảnh# imshow[] và đường viền[] như trênHình ảnh với đường viền rung động[] rung động[] Vectơ trường hướng

MATLAB® và. NumPy/. SciPy có nhiều điểm chung. Nhưng có nhiều sự khác biệt. NumPy và SciPy được tạo ra để thực hiện tính toán số và khoa học theo cách tự nhiên nhất với Python, không phải là bản sao của MATLAB®. Trang này nhằm mục đích trở thành nơi thu thập kiến ​​thức về sự khác biệt, chủ yếu nhằm mục đích giúp người dùng MATLAB® thành thạo trở thành người dùng NumPy và SciPy thành thạo. NumPyProConPage là một trang khác dành cho những người tò mò đang nghĩ đến việc áp dụng Python với NumPy và SciPy thay vì MATLAB® và muốn xem danh sách ưu và nhược điểm

Trong MATLAB®, kiểu dữ liệu cơ bản là một mảng đa chiều gồm các số dấu phẩy động có độ chính xác kép. Hầu hết các biểu thức lấy các mảng như vậy và trả về các mảng đó. Các phép toán trên các phiên bản 2-D của các mảng này được thiết kế để hoạt động ít nhiều giống như các phép toán ma trận trong đại số tuyến tính

Trong NumPy, kiểu cơ bản là một mảng nhiều chiều. Các thao tác trên các mảng này ở tất cả các chiều bao gồm cả 2D là các thao tác theo phần tử. Tuy nhiên, có một loại ma trận đặc biệt để làm đại số tuyến tính, nó chỉ là một lớp con của lớp mảng. Các phép toán trên mảng ma trận là các phép toán đại số tuyến tính

MATLAB® sử dụng 1 [một] chỉ mục dựa trên. Phần tử ban đầu của một chuỗi được tìm thấy bằng cách sử dụng a[1].

Python sử dụng lập chỉ mục dựa trên 0 [không]. Phần tử ban đầu của một chuỗi được tìm thấy bằng cách sử dụng [0]

Ngôn ngữ kịch bản của MATLAB® được tạo ra để thực hiện đại số tuyến tính. Cú pháp cho các hoạt động ma trận cơ bản là tốt và rõ ràng, nhưng API để thêm GUI và tạo các ứng dụng chính thức ít nhiều là một suy nghĩ sau

NumPy dựa trên Python, được thiết kế ngay từ đầu để trở thành ngôn ngữ lập trình đa năng xuất sắc. Mặc dù cú pháp của Matlab cho một số thao tác với mảng nhỏ gọn hơn của NumPy, nhưng NumPy [do là một tiện ích bổ sung cho Python] có thể thực hiện nhiều việc mà Matlab không thể làm được, chẳng hạn như phân lớp con kiểu mảng chính để thực hiện cả phép toán mảng và ma trận một cách rõ ràng

Trong MATLAB®, các mảng có ngữ nghĩa truyền theo giá trị, với sơ đồ sao chép khi ghi lười biếng để ngăn việc tạo các bản sao thực sự cho đến khi chúng thực sự cần thiết. Thao tác cắt sao chép các phần của mảng

Trong các mảng NumPy có ngữ nghĩa truyền qua tham chiếu. Thao tác lát cắt là các khung nhìn thành một mảng

Trong MATLAB®, mọi hàm phải nằm trong một tệp có cùng tên và bạn không thể xác định các hàm cục bộ trong tệp tập lệnh thông thường hoặc tại dấu nhắc lệnh [nội tuyến không phải là hàm thực mà là macro, như trong C]

Mã NumPy là mã Python, vì vậy nó không có hạn chế như vậy. Bạn có thể xác định chức năng bất cứ nơi nào bạn muốn

MATLAB® có một cộng đồng tích cực và có rất nhiều mã miễn phí. Nhưng sức sống của cộng đồng bị giới hạn bởi chi phí của MATLAB®;

NumPy/. SciPy cũng có một cộng đồng tích cực, dựa trên trang web này. Nó nhỏ hơn, nhưng nó đang phát triển rất nhanh. Ngược lại, các chương trình Python có thể được phân phối lại và sử dụng tự do. Xem Topical_Software để biết danh sách phần mềm ứng dụng bổ sung miễn phí, Mailing_Lists để thảo luận và phần còn lại của trang web này để biết thêm đóng góp của cộng đồng. Chúng tôi khuyến khích sự tham gia của bạn

MATLAB® có một bộ mở rộng các tiện ích bổ sung tùy chọn, dành riêng cho miền ['hộp công cụ'] có sẵn để mua, chẳng hạn như để xử lý tín hiệu, tối ưu hóa, hệ thống điều khiển và toàn bộ hệ thống SimuLink® để tạo đồ họa các mô hình hệ thống động

Hiện tại không có tương đương trực tiếp với điều này trong thế giới phần mềm tự do, về phạm vi và độ sâu của các tiện ích bổ sung. Tuy nhiên, danh sách trong Topical_Software chắc chắn cho thấy xu hướng ngày càng tăng theo hướng đó

MATLAB® có hệ thống đồ thị 2-d và 3-d tinh vi, với các tiện ích giao diện người dùng

Phần mềm bổ trợ có thể được sử dụng với Numpy để tạo các biểu đồ có thể so sánh với MATLAB®. Matplotlib là thư viện vẽ sơ đồ 2 chiều hoàn thiện mô phỏng giao diện MATLAB®. PyQwt cho phép giao diện người dùng mạnh hơn và nhanh hơn MATLAB®. Và mlab, API "giống như matlab" dựa trên Mayavi2, để vẽ sơ đồ 3D của mảng Numpy. Xem trang Topical_Software để biết thêm tùy chọn, liên kết và chi tiết. Tuy nhiên, không có giải pháp vẽ đồ thị tích hợp, tất cả trong một, dễ sử dụng, dứt khoát cho 2-d và 3-d. Đây là khu vực mà Numpy/Scipy có thể sử dụng một số công việc

MATLAB® cung cấp môi trường phát triển đầy đủ với cửa sổ tương tác lệnh, trình chỉnh sửa tích hợp và trình gỡ lỗi

Numpy không có một IDE tiêu chuẩn. Tuy nhiên, môi trường IPython cung cấp một dấu nhắc lệnh tinh vi với đầy đủ hỗ trợ hoàn thành, trợ giúp và gỡ lỗi cũng như giao diện với thư viện Matplotlib để vẽ đồ thị và trình chỉnh sửa Emacs/XEmacs

Bản thân MATLAB® có giá hàng nghìn đô la nếu bạn không phải là sinh viên. Mã nguồn của gói chính không có sẵn cho người dùng thông thường. Bạn không thể tự cô lập hay sửa lỗi và các vấn đề về hiệu suất, cũng như không thể trực tiếp tác động đến hướng phát triển trong tương lai. [Tuy nhiên, nếu bạn thực sự thích cú pháp giống Matlab, thì có Octave, một môi trường tính toán số khác cho phép sử dụng hầu hết các cú pháp Matlab mà không cần sửa đổi. ]

NumPy và SciPy miễn phí [cả bia và lời nói], dù bạn là ai

Câu trả lời ngắn

sử dụng mảng

  • Chúng là loại vectơ/ma trận/tensor tiêu chuẩn của numpy. Nhiều hàm numpy trả về mảng, không phải ma trận
  • Có sự phân biệt rõ ràng giữa các phép toán phần tử khôn ngoan và các phép toán đại số tuyến tính
  • Bạn có thể có các vectơ chuẩn hoặc vectơ hàng/cột nếu muốn

Nhược điểm duy nhất của việc sử dụng kiểu mảng là bạn sẽ phải sử dụng dấu chấm thay vì * để nhân [giảm] hai thang đo [tích vô hướng, phép nhân vectơ ma trận, v.v. ]

Câu trả lời dài

Numpy chứa cả lớp mảng và lớp ma trận. Lớp mảng được dự định là một mảng n chiều có mục đích chung cho nhiều loại tính toán số, trong khi ma trận được dự định để tạo điều kiện cụ thể cho các tính toán đại số tuyến tính. Trong thực tế, chỉ có một số khác biệt chính giữa hai

  • Toán tử *, dấu chấm[] và phép nhân[]

    • Đối với mảng, '*' có nghĩa là phép nhân theo phần tử và hàm dot[] được sử dụng để nhân ma trận

    • Đối với ma trận, '*' có nghĩa là phép nhân ma trận và hàm multi[] được sử dụng để nhân phần tử

  • Xử lý vectơ [mảng hạng 1]
    • Đối với mảng, các hình dạng vectơ 1xN, Nx1 và N đều khác nhau. Các phép toán như A[. ,1] trả về mảng hạng 1 của hình N, không phải mảng hạng 2 của hình Nx1. Chuyển đổi trên mảng hạng 1 không làm gì cả

    • Đối với ma trận, mảng hạng 1 luôn được chuyển đổi ngược thành ma trận 1xN hoặc Nx1 [vectơ hàng hoặc cột]. MỘT[. ,1] trả về ma trận hạng 2 có hình dạng Nx1

  • Xử lý các mảng có thứ hạng cao hơn [xếp hạng > 2]

    • các đối tượng mảng có thể có thứ hạng> 2

    • các đối tượng ma trận luôn có thứ hạng chính xác là 2

  • thuộc tính tiện lợi
    • mảng có một. Thuộc tính T, trả về chuyển vị của dữ liệu

    • ma trận cũng có. H,. Tôi và. Một thuộc tính, lần lượt trả về chuyển vị liên hợp, nghịch đảo và asarray[] của ma trận

  • nhà xây dựng tiện lợi
    • Hàm tạo mảng lấy các chuỗi Python [lồng nhau] làm bộ khởi tạo. Như trong, mảng[[[1,2,3],[4,5,6]]]

    • Ngoài ra, hàm tạo ma trận có một trình khởi tạo chuỗi thuận tiện. Như trong matrix["[1 2 3; 4 5 6]"]

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

  • mảng

    • Bạn có thể coi mảng hạng 1 là vectơ hàng hoặc cột. dot[A,v] coi v là vectơ cột, trong khi dot[v,A] coi v là vectơ hàng. Điều này có thể giúp bạn không phải gõ nhiều chuyển vị

    • Việc phải sử dụng hàm dot[] để nhân ma trận rất lộn xộn -- dot[dot[A,B],C] vs. A*B*C

    • Nhân tố khôn ngoan là dễ dàng. A*B

    • mảng là loại NumPy "mặc định", do đó, nó được thử nghiệm nhiều nhất và là loại có nhiều khả năng được mã bên thứ 3 sử dụng NumPy trả về nhất

    • Là khá ở nhà xử lý dữ liệu của bất kỳ thứ hạng

    • Gần gũi hơn về ngữ nghĩa với đại số tensor, nếu bạn đã quen với điều đó

    • Tất cả các hoạt động [*, /, +, ** vv. ] theo nguyên tố

  • ma trận

    • Hành vi giống như hành vi của ma trận MATLAB®

    • Tối đa hạng 2. Để giữ dữ liệu hạng 3, bạn cần mảng hoặc có lẽ là danh sách ma trận Python

    • Tối thiểu hạng 2. Bạn không thể có vectơ. Chúng phải được truyền dưới dạng ma trận một cột hoặc một hàng

    • Vì mảng là mặc định trong NumPy, một số hàm có thể trả về một mảng ngay cả khi bạn cung cấp cho chúng một ma trận làm đối số. Điều này không nên xảy ra với các chức năng của NumPy [nếu đó là lỗi], nhưng mã của bên thứ 3 dựa trên NumPy có thể không tôn trọng việc bảo toàn kiểu như NumPy.

    • A*B là phép nhân ma trận nên thuận tiện hơn cho đại số tuyến tính

    • Phép nhân theo nguyên tố yêu cầu gọi một hàm, multipy[A,B]

    • Việc sử dụng quá tải toán tử là một chút phi logic. * không hoạt động theo phần tử nhưng / không

Do đó, mảng được khuyến khích sử dụng nhiều hơn, nhưng cuối cùng, bạn không thực sự phải chọn cái này hay cái kia. Bạn có thể trộn và kết hợp. Bạn có thể sử dụng mảng cho phần lớn mã của mình và chuyển sang ma trận trong các phần mà bạn có đại số tuyến tính thực chất với nhiều phép nhân ma trận-ma trận

Numpy có một số tính năng tạo thuận lợi cho việc sử dụng loại ma trận, hy vọng sẽ giúp mọi việc chuyển đổi Matlab dễ dàng hơn

  • Một mô-đun matlib đã được thêm vào có chứa các phiên bản ma trận của các hàm tạo mảng phổ biến như cái[], số không[], trống[], mắt[], rand[], repmat[], v.v. Thông thường, các hàm này trả về các mảng, nhưng các phiên bản matlib trả về các đối tượng ma trận

  • mat đã được thay đổi thành một từ đồng nghĩa với asmatrix, thay vì ma trận, do đó làm cho nó trở thành cách ngắn gọn để chuyển đổi một mảng thành ma trận mà không cần sao chép dữ liệu

  • Một số chức năng cấp cao nhất đã bị xóa. Ví dụ như numpy. Rand[] bây giờ cần được truy cập dưới dạng numpy. ngẫu nhiên. rand[]. Hoặc sử dụng rand[] từ mô-đun matlib. Nhưng cách "numpythonic" là sử dụng numpy. ngẫu nhiên. random[], lấy một bộ cho hình dạng, giống như các hàm numpy khác

Bảng dưới đây đưa ra các giá trị tương đương sơ bộ cho một số biểu thức MATLAB® phổ biến. Đây không phải là tương đương chính xác, nhưng nên được coi là gợi ý để giúp bạn đi đúng hướng. Để biết thêm chi tiết, hãy đọc tài liệu tích hợp về các hàm NumPy

Cần cẩn thận khi viết các hàm lấy mảng hoặc ma trận làm đối số --- nếu bạn đang mong đợi một mảng và được cung cấp một ma trận hoặc ngược lại, thì '*' [phép nhân] sẽ cho bạn kết quả không mong muốn. Bạn có thể chuyển đổi qua lại giữa các mảng và ma trận bằng cách sử dụng

  • lộn xộn. luôn trả về một đối tượng kiểu mảng

  • asmatrix hoặc mat. luôn trả về một đối tượng kiểu ma trận

  • asanyarray. luôn trả về một đối tượng mảng hoặc một lớp con bắt nguồn từ nó, tùy thuộc vào đầu vào. Chẳng hạn, nếu bạn chuyển vào một ma trận, nó sẽ trả về một ma trận

Tất cả các hàm này đều chấp nhận cả mảng và ma trận [trong số những thứ khác như danh sách Python] và do đó rất hữu ích khi viết các hàm chấp nhận bất kỳ đối tượng giống như mảng nào

Trong bảng bên dưới, giả sử rằng bạn đã thực hiện các lệnh sau trong Python

from numpy import *
import scipy as Sci
import scipy.linalg

Cũng giả sử bên dưới rằng nếu Ghi chú nói về "ma trận" thì các đối số là các thực thể hạng 2

ĐÂY LÀ TÀI LIỆU WIKI ĐANG PHÁT TRIỂN. Nếu bạn tìm thấy một lỗi, hoặc có thể điền vào một ô trống, xin vui lòng sửa nó. Nếu có thứ gì đó bạn muốn thấy được thêm vào, chỉ cần thêm nó

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

MATLAB

cục mịch

ghi chú

chức năng trợ giúp

thông tin [func] hay trợ giúp [func] hay func?

nhận trợ giúp về chức năng func

chức năng nào

[]

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

gõ chức năng

nguồn [func] hay func??

nguồn in cho func [nếu không phải là chức năng gốc]

một && b

A và B

toán tử logic AND ngắn mạch [toán tử gốc Python];

một. b

a hoặc b

đoản mạch toán tử logic OR [toán tử gốc Python];

1*i,1*j,1i,1j

1j

số phức

tập phim

khoảng cách[1]

Khoảng cách giữa 1 và số dấu phẩy động gần nhất

thơ45

scipy. tích hợp. ca ngợi [f]. set_integrator['dopri5']

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

ode15s

scipy. tích hợp. ca ngợi [f]. \
set_integrator['vode', method='bdf', order=15]

tích hợp một ODE với BDF

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

Thảm ký hiệu [. ] có nghĩa là sử dụng cùng một biểu thức như mảng, nhưng chuyển đổi thành ma trận bằng trình chuyển đổi kiểu mat[]

Các ký hiệu asarray [. ] có nghĩa là sử dụng cùng một biểu thức như ma trận, nhưng chuyển đổi thành mảng bằng trình chuyển đổi kiểu asarray[]

MATLAB

cục mịch. mảng

cục mịch. ma trận

ghi chú

ndim[a]

ndim[a] hoặc một. đim

lấy số thứ nguyên của a [xếp hạng tensor]

số[a]

kích thước [a] hoặc một. kích thước

lấy số phần tử của mảng

kích thước [a]

hình dạng [a] hoặc một. hình dạng

lấy "kích thước" của ma trận

kích thước [a, n]

a. hình dạng[n-1]

lấy số phần tử của chiều thứ n của mảng a. [Lưu ý rằng MATLAB® sử dụng lập chỉ mục dựa trên 1 trong khi Python sử dụng lập chỉ mục dựa trên 0, ]

[ 1 2 3;

mảng [[[1. ,2. ,3. ],
[4. ,5. ,6. ]]]

thảm[[[1. ,2. ,3. ],
[4. ,5. ,6. ]]] hoặc là
mat["1 2 3; 4 5 6"]

Ma trận 2x3 theo nghĩa đen

[ a b;

vstack[[hstack[[a,b]],
hstack[[c,d]]]]

bmat['a b; c d']

xây dựng một ma trận từ các khối a, b, c và d

một [kết thúc]

một[-1]

một[. ,-1][0,0]

truy cập phần tử cuối cùng trong ma trận 1xn a

a[2,5]

một[1,4]

phần tử truy cập ở hàng thứ hai, cột thứ năm

a[2,. ]

a[1] hoặc a[1,. ]

toàn bộ hàng thứ hai của một

một[1. 5,. ]

một[0. 5] hoặc một [. 5] hoặc a[0. 5,. ]

năm hàng đầu tiên của một

a[end-4. kết thúc,. ]

một[-5. ]

năm hàng cuối cùng của một

một[1. 3,5. 9]

một[0. 3][. ,4. 9]

hàng một đến ba và cột năm đến chín của một. Điều này cho phép truy cập chỉ đọc

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

a[ix_[[1,3,4],[0,2]]]

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 thông thường

một[3. 2. 21,. ]

một[ 2. 21. 2,. ]

mọi hàng khác của a, bắt đầu từ hàng thứ ba và đi đến hàng thứ hai mươi mốt

một[1. 2. kết thúc,. ]

một[. 2,. ]

mọi hàng khác của a, bắt đầu với hàng đầu tiên

một [kết thúc. -1. 1,. ] hoặc flipud[a]

một[. -1,. ]

a với các hàng theo thứ tự ngược lại

một[[1. kết thúc 1],. ]

một[r_[. len[a],0]]

a với bản sao của hàng đầu tiên nối vào cuối

a. '

a. chuyển vị[] hoặc một. T

chuyển vị của một

một'

a. conj[]. chuyển vị[] hoặc một. conj[]. T

a. H

chuyển vị liên hợp của một

a * b

chấm[a,b]

a * b

nhân ma trận

một. * b

a * b

nhân[a,b]

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

a. /b

a/b

phân chia phần tử khôn ngoan

a. ^3

một**3

sức mạnh[a,3]

lũy thừa phần tử khôn ngoan

[a>0. 5]

[a>0. 5]

ma trận có phần tử thứ i,j là [a_ij > 0. 5]

tìm[a>0. 5]

khác không [a>0. 5]

tìm các chỉ số trong đó [a > 0. 5]

một[. ,tìm[v>0. 5]]

một[. ,khác không[v>0. 5][0]]

một[. , khác không [v. MỘT>0. 5][0]]

trích xuất các cột của một trong đó vector v > 0. 5

một[. ,tìm[v>0. 5]]

một[. , v. T>0. 5]

một[. , v. T>0. 5]]

trích xuất các cột của cột trong đó vector v > 0. 5

a[a0. 5]

chiếu [một. A * [a>0. 5]. MỘT]

a với các phần tử nhỏ hơn 0. 5 không ra

một[. ] = 3

một[. ] = 3

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

y=x

y = x. sao chép[]

numpy gán theo tham chiếu

y=x[2,. ]

y = x[1,. ]. sao chép[]

lát numpy là bằng cách tham khảo

y=x[. ]

y = x. làm phẳng[1]

biến mảng thành vectơ [lưu ý rằng điều này buộc phải sao chép]

1. 10

sắp xếp[1. ,11. ] hoặc là
r_[1. 11. ] hoặc là
r_[1. 10. 10j]

mat[arange[1. ,11. ]] hoặc là
r_[1. 11. ,'r']

tạo một véc tơ tăng dần

0. 9

sắp xếp [10. ] hoặc là
r_[. 10. ] hoặc là
r_[. 9. 10j]

mat [sắp xếp [10. ]] hoặc là
r_[. 10. ,'r']

tạo một véc tơ tăng dần

[1. 10]'

sắp xếp[1. ,11. ][. , newaxis]

r_[1. 11. ,'c']

tạo một vectơ cột

số không [3,4]

số không[[3,4]]

chiếu[. ]

Mảng 3x4 hạng 2 chứa đầy các số 0 dấu phẩy động 64 bit

số không [3,4,5]

số không[[3,4,5]]

chiếu[. ]

Mảng 3x4x5 hạng 3 chứa đầy các số 0 dấu phẩy động 64 bit

cái[3,4]

cái[[3,4]]

chiếu[. ]

Mảng 3x4 hạng 2 có đầy đủ các dấu phẩy động 64 bit

mắt[3]

mắt[3]

chiếu[. ]

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

chẩn đoán [a]

chẩn đoán [a]

chiếu[. ]

vectơ các phần tử đường chéo của a

chẩn đoán [a,0]

chẩn đoán [a,0]

chiếu[. ]

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

rand[3,4]

ngẫu nhiên. rand[3,4]

chiếu[. ]

ma trận 3x4 ngẫu nhiên

không gian trống [1,3,4]

không gian trống [1,3,4]

chiếu[. ]

4 mẫu cách đều nhau giữa 1 và 3, bao gồm

[x,y]=lưới lưới[0. 8,0. 5]

mgrid[0. 9. ,0. 6. ] hoặc là
lưới lưới[r_[0. 9. ],r_[0. 6. ]

chiếu[. ]

hai mảng 2D. một trong các giá trị x, giá trị còn lại của y

ogrid[0. 9. ,0. 6. ] hoặc là
ix_[r_[0. 9. ],r_[0. 6. ]

chiếu[. ]

cách tốt nhất để đánh giá các hàm trên lưới

[x,y]=lưới lưới[[1,2,4],[2,4,5]]

lưới[[1,2,4],[2,4,5]]

chiếu[. ]

ix_[[1,2,4],[2,4,5]]

chiếu[. ]

cách tốt nhất để đánh giá các hàm trên lưới

repmat[a, m, n]

gạch[a, [m, n]]

chiếu[. ]

tạo m bởi n bản sao của một

[ab]

nối [[a,b],1] hoặc
hstack[[a,b]] hoặc
column_stack[[a,b]] hoặc
taxi]

nối [[a,b],1]

nối các cột của a và b

[một;

nối [[a,b]] hoặc
vstack[[a,b]] hoặc
r_[a,b]

nối [[a,b]]

nối các hàng của a và b

tối đa[tối đa[a]]

a. tối đa[]

phần tử tối đa của a [với ndims[a]; Matlab's is the reverse

If you know you have boolean arguments, you can get away with using Numpy's bitwise operators, but be careful with parentheses, like this. z = [x > 1] & [x < 2]. The absence of Numpy operator forms of logical_and and logical_or is an unfortunate consequence of Python's design

RESHAPE and LINEAR INDEXING. 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. find[] 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. z = reshape[x,3,4]; should become z = x. reshape[3,4,order='F']. copy[] in Numpy

In MATLAB® the main tool available to you for customizing the environment is to modify the search path with the locations of your favorite functions. You can put such customizations into a startup script that MATLAB will run on startup

NumPy, or rather Python, has similar facilities

  • To modify your Python search path to include the locations of your own modules, define the PYTHONPATH environment variable

  • To have a particular script file executed when the interactive Python interpreter is started, define the PYTHONSTARTUP environment variable to contain the name of your startup script

Unlike MATLAB®, where anything on your path can be called immediately, with Python you need to first do an 'import' statement to make functions in a particular file accessible

For example you might make a startup script that looks like this [Note. this is just an example, not a statement of "best practices"]

  • Plotting. matplotlib provides a workalike interface for 2D plotting; Mayavi provides 3D plotting

  • Symbolic calculation. swiginac appears to be the most complete current option. sympy is a project aiming at bringing the basic symbolic calculus functionalities to Python. Also to be noted is PyDSTool which provides some basic symbolic functionality

  • Linear algebra. scipy. linalg provides the LAPACK routines

  • Interpolation. [/ScipyPackages/Interpolate scipy. interpolate] provides several spline interpolation tools

  • Numerical integration. scipy. integrate provides several tools for integrating functions as well as some basic ODE integrators. Convert XML vector field specifications automatically using VFGEN

  • Dynamical systems. PyDSTool cung cấp gói mô hình hóa và hệ thống động lớn, bao gồm các bộ tích hợp ODE/DAE tốt. Convert XML vector field specifications automatically using VFGEN

  • Simulink. hiện tại không có sự thay thế nào

See http. //mathesaurus. sf. net/ for another MATLAB®/NumPy cross-reference

See http. //urapiv. báo chí. com cho một dự án mã nguồn mở [URAPIV] cố gắng chuyển từ MATLAB® sang Python [PyPIV http. //nguồnforge. net/projects/pypiv] với SciPy/NumPy

Để tạo một môi trường lập trình tương tự như môi trường được trình bày bởi MATLAB®, những điều sau đây rất hữu ích

  • IPython. một môi trường tương tác với nhiều tính năng hướng đến công việc hiệu quả trong cách sử dụng khoa học điển hình rất giống [với một số cải tiến] với bảng điều khiển MATLAB®

  • Matplotlib. một gói vẽ đồ thị 2D với một danh sách các lệnh tương tự như các lệnh được tìm thấy trong MATLAB. Matplotlib được tích hợp rất tốt với IPython

  • Spyder một môi trường phát triển Python mã nguồn mở và miễn phí cung cấp giao diện và trải nghiệm giống như MATLAB®

  • SPE là một IDE miễn phí tốt cho python. Có lời nhắc tương tác

  • nhật thực. là một tùy chọn hay để chỉnh sửa mã python thông qua plugin pydev

  • cánh IDE. một IDE thương mại có sẵn cho nhiều nền tảng. Phiên bản chuyên nghiệp có lời nhắc gỡ lỗi tương tác tương tự như MATLAB's

  • Phần mềm phát triển khoa học và kỹ thuật Python[x,y] để tính toán số, phân tích dữ liệu và trực quan hóa dữ liệu. Quá trình cài đặt bao gồm, trong số những thứ khác, Spyder, Eclipse và rất nhiều mô-đun Python có liên quan để tính toán khoa học

  • Công cụ Python cho Visual Studio. một plugin IDE phong phú cho Visual Studio hỗ trợ CPython, IronPython, IPython REPL, Gỡ lỗi, Cấu hình, bao gồm chạy chương trình MPI gỡ lỗi trên các cụm HPC

Một danh sách đầy đủ các công cụ cho công việc khoa học với python có trong liên kết. Topical_Software

  • MATLAB® và SimuLink® là thương hiệu đã đăng ký của The MathWorks

Thể loạiCookbook CategoryTemplate CategoryTemplate CategorySách dạy nấu ănSciPyPackages CategoryCategory

Làm cách nào để sử dụng mảng MATLAB trong Python?

Bạn có thể chuyển các mảng MATLAB làm đối số đầu vào cho các hàm MATLAB được gọi từ Python . Khi một hàm MATLAB trả về một mảng số làm đối số đầu ra, thì mảng đó được trả về Python. Bạn có thể khởi tạo một mảng với đối số đầu vào của trình khởi tạo tùy chọn có chứa các số.

MATLAB có NumPy không?

Mảng NumPy tương đương với cấu trúc dữ liệu mảng cơ bản trong MATLAB . Với mảng NumPy, bạn có thể thực hiện những việc như tích bên trong và bên ngoài, chuyển vị và các phép toán theo phần tử.

Tôi có thể gọi các hàm MATLAB bằng Python không?

Bạn có thể gọi trực tiếp bất kỳ hàm MATLAB nào và trả kết quả về Python . Ví dụ: để xác định xem một số có phải là số nguyên tố hay không, hãy sử dụng công cụ để gọi hàm isprime.

NumPy hay MATLAB cái nào nhanh hơn?

Trong Python X += Y; . Tuy nhiên, trong MATLAB trên máy của tôi X = X + 2*Y nhanh hơn một chút so với X = X + Y + Y. . Điểm chính xác

Chủ Đề