Làm cách nào để thêm MATLAB trong Python?

Việc triển khai MATLAB thường khá đáng tin cậy vì nó được phát triển bởi các chuyên gia. Nhưng những lợi thế của việc sử dụng Python là vô cùng lớn. Trong bài đăng này, tôi sẽ trình bày cách bạn có thể tích hợp hàm MATLAB tùy chỉnh vào tập lệnh Python của mình

Hình ảnh của Gerd Altmann từ PixabayXác định chức năng tùy chỉnh trong MATLAB

Hãy để chúng tôi tạo một hàm tùy chỉnh trong MATLAB mà chúng tôi có thể sử dụng trong Python. Để trình diễn, tôi sẽ sử dụng một hàm cơ bản, nhưng ý tưởng tương tự cũng áp dụng cho bất kỳ hàm nào

Giá trị riêng và vectơ riêng trong MATLAB

function [V,D] = eigFunc[A]
%returns diagonal matrix D of eigenvalues and matrix V
% whose columns are the corresponding right eigenvectors,
% so that A*V = V*D.
[V, D] = eig[A];
end

Tôi đã lưu chức năng trên là eigFunc. Hàm này lấy một ma trận vuông làm ma trận đường chéo đầu vào và đầu ra D của các giá trị riêng và ma trận

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
0 có các cột là các vectơ riêng bên phải tương ứng [ xem hàm eig trong MATLAB]

Trước tiên hãy sử dụng chức năng này trong MATLAB cho mục đích thử nghiệm

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]

Điều này trả về

V =

0.0693 -0.4422 -0.8105 0.3778
-0.3618 0.7420 -0.1877 0.5322
0.7694 0.0486 0.3010 0.5614
-0.5219 -0.5014 0.4662 0.5088


D =

0.2078 0 0 0
0 0.4078 0 0
0 0 0.8482 0
0 0 0 2.5362

Hàm này hoạt động xuất sắc trong MATLAB như mong đợi [vì hàm này là bản sao chính xác của hàm

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
1 trong MATLAB. Nhưng làm thế nào chúng ta có thể sử dụng chức năng này trong Python?

Gọi MATLAB bằng Python

Sử dụng API công cụ MATLAB cho Python

Cách dễ nhất để sử dụng hàm MATLAB trong Python là sử dụng hàm

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
2. Bạn có thể cài đặt thư viện
clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
3 bằng cách làm theo hai cách sau

Cài đặt từ bên trong MATLAB

cd [fullfile[matlabroot,'extern','engines','python']]
system['python setup.py install']

Cài đặt trực tiếp từ thiết bị đầu cuối

Điều hướng đến vị trí nguồn MATLAB và biên dịch python

________số 8_______

Xin lưu ý rằng API công cụ MATLAB này sẽ được cài đặt cho phiên bản cụ thể của

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
4. Nếu bạn đang sử dụng anaconda, bạn có thể kiểm tra phiên bản Python mà bạn đang cài đặt API công cụ MATLAB cho. Về cơ bản, nó giống như cách bạn cài đặt các thư viện Python khác. Chi tiết truy cập tại đây

import matlab
import matlab.engine
eng = matlab.engine.start_matlab[]
A = [[1.0000, 0.5000, 0.3333, 0.2500],
[0.5000, 1.0000, 0.6667, 0.5000],
[0.3333, 0.6667, 1.0000, 0.7500],
[0.2500, 0.5000, 0.7500, 1.0000]]
A = matlab.double[A]
V, D = eng.eigFunc[A, nargout=2]
print["V: ", V]
print["D: ", D]

eng.quit[]

Đây là đầu ra

V:  [[0.06939950784450351,-0.4421928183150595,-0.8104910184495989,0.37782737957175255],				[-0.3619020163563876,0.7419860358173743,-0.18770341448628555,0.5322133795757004],[0.7693553355549393,0.04873539080548356,0.30097912769034274,0.5613633351323756],[-0.5218266058004974,-0.5015447096377744,0.4661365700065611,0.5087893432606572]]

D: [[0.20775336892808516,0.0,0.0,0.0],[0.0,0.40783672775946245,0.0,0.0],[0.0,0.0,0.8482416513967358,0.0],[0.0,0.0,0.0,2.536168251915717]]

Kết quả vẫn giống như trước đây. Đối số

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
5 báo cho hàm dựa trên matlab xuất ra kết quả
clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
6 tại đây

Tạo gói Python. Sử dụng Trình biên dịch MATLAB & Thời gian chạy MATLAB

Điều này hoàn toàn tốt nếu bạn đã cài đặt MATLAB trong hệ thống của mình. Nhưng nếu bạn muốn đưa tập lệnh Python của mình cho người chưa cài đặt MATLAB trên hệ thống của họ thì sao?. Trong trường hợp đó, bạn có thể xây dựng thư viện Python bằng ứng dụng

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
7 trong MATLAB. Để biết chi tiết, hãy truy cập Tạo Gói Python và Xây dựng Ứng dụng Python

[a] Chọn ứng dụng biên dịch thư viện trong MATLAB [b] Điền thông tin liên quan đến thư viện Python [Ảnh của tác giả]

[a] Chọn hàm MATLAB để tạo thư viện Python [b] Thêm tập lệnh MATLAB mẫu [Ảnh của tác giả]

[a] Nhấp vào
clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
8 để tạo thành phần độc lập [b] Đợi tác vụ hoàn thành [Ảnh của tác giả]

Cài đặt thời gian chạy MATLAB

Xin lưu ý rằng người dùng cần cài đặt thời gian chạy MATLAB để sử dụng thành công thư viện này. Thời gian chạy MATLAB giúp chạy các ứng dụng hoặc thành phần MATLAB đã biên dịch mà không cần cài đặt MATLAB. Có thể tải xuống thời gian chạy từ đây cho HĐH Windows, Mac và Linux và tải xuống miễn phí

Nhập thư viện dựa trên MATLAB cho Python

import eigFunc
eigFuncAnalyzer = eigFunc.initialize[] #calls the matlab runtime
A = [[1.0000, 0.5000, 0.3333, 0.2500],
[0.5000, 1.0000, 0.6667, 0.5000],
[0.3333, 0.6667, 1.0000, 0.7500],
[0.2500, 0.5000, 0.7500, 1.0000]]
A = array.array[A] %not tested
V, D = eigFuncAnalyzer.eigFunc[A, nargout=2]
print["V: ", V]
print["D: ", D]
eigFuncAnalyzer.terminate[]

Xin lưu ý rằng bạn có thể thiết kế

clear; close all; clc
A = gallery['lehmer',4];

[V,D] = eigFunc[A]
9 của mình theo cách mà bạn có thể tải dữ liệu mat một cách đơn giản và bạn có thể sử dụng hàm
V =

0.0693 -0.4422 -0.8105 0.3778
-0.3618 0.7420 -0.1877 0.5322
0.7694 0.0486 0.3010 0.5614
-0.5219 -0.5014 0.4662 0.5088


D =

0.2078 0 0 0
0 0.4078 0 0
0 0 0.8482 0
0 0 0 2.5362
0 để lưu dữ liệu python sang định dạng mat. Để biết chi tiết, hãy xem tài liệu scipy

Chủ Đề