Main Content Show
This example shows how to create an object from a MATLAB® handle class and call its methods in Python®. In your current folder, create a MATLAB handle class in a file named classdef Triangle < handle properties (SetAccess = private) Base = 0; Height = 0; end methods function TR = Triangle(b,h) TR.Base = b; TR.Height = h; end function a = area(TR) a = 0.5 .* TR.Base .* TR.Height; end function setBase(TR,b) TR.Base = b; end function setHeight(TR,h) TR.Height = h; end end end Start Python. Create a import matlab.engine eng = matlab.engine.start_matlab() tr = eng.Triangle(5.0,3.0) a = eng.area(tr) print(a) Copy eng.workspace["wtr"] = tr b = eng.eval("wtr.Base") print(b) Change the height with the eng.setHeight(tr,8.0,nargout=0) a = eng.area(tr) print(a) Note
See Also
Related Topics
Main Content Nội dung chính
An opaque object has no properties and methods visible to MATLAB®. You can pass these objects to related functions that know how to work with them. Consult the documentation for the function that returned the opaque object to learn more about how to use it. For example, this C++ code defines typedef void* SessionHandle; SessionHandle getHandle(){ // implement code here }; void closeHandle(void * SessionHandle){}; After generating the MATLAB interface sessionHandle = clib.lib.getHandle sessionHandle = SessionHandle is an opaque object. The help for clib.lib.SessionHandle C++ opaque type. You can
pass the MATLAB clib.lib.closeHandle(sessionHandle) Hi, I am plotting inversion results in a pcolor-plot, where I specify the transparency of each data point in dependance on the certainty of the model parameter. NaN is assigned to some model parameters, which appear white. Due to the resolution of the inversion grid, the boundary between the areas for which I have values and the NaN area appears very blocky. In a plot that uses no transpareny, I can easily plot a white polygon with the "fill"-command which results in a sharp boundary. However, when I plot the white polygon with FaceALpha=1 above transparent elements, I can still see those elements below the polygon. Here is an example that shows the effect: clear all close all figure polygon1=fill([1 3 3 1],[1 1 3 3],'r','FaceALpha',0.5); hold on polygon2=fill([2 4 4 2],[2 2 4 4],'b','FaceALpha',1); polygon3=fill([2 4 4 2],[1 1 2 2],'w','FaceALpha',1); xlim([0 5]) ylim([0 5]) The blue rectangle should cover the red one, why does the overlay appear purple then? Accepted AnswerEdited: Jan on 24 Aug 2014 The code draws the polygons in the same z==0 plane. The transparency activates the OpenGL renderer. The renderer has to decide the order of patchs along the view direction, but this order is not well defined in OpenGL, because the renderer does not have any information about the order the objects have been defined inside Matlab - in opposite to the Painters renderer. So try this: figure polygon1=fill3([1 3 3 1],[1 1 3 3],[1,1,1,1], 'r','FaceALpha',0.5); hold on polygon2=fill3([2 4 4 2],[2 2 4 4],[2,2,2,2], 'b','FaceALpha',1); polygon3=fill3([2 4 4 2],[1 1 2 2],[3,3,3,3], 'w','FaceALpha',1); xlim([0 5]) ylim([0 5]) pause(1) view(2) More Answers (0)See AlsoCategoriesCommunity Treasure HuntFind the treasures in MATLAB Central and discover how the community can help you! Start Hunting! An Error Occurred Unable to complete the action because of changes made to the page. Reload the page to see its updated state. Tổng quanGần đây trong công việc của mình, tôi đã viết lại các thuật toán được phát triển trong MatLab sang Python , một số hàm không đơn giản để thích nghi, đặc biệt là các hàm mảng được gọi là Mảng di động . Nội dung chính
Nội dung chính
Nội dung chính
MatLab có API nơi bạn có thể gọi các hàm MatLab thông qua Python. Tuy nhiên, ý tưởng không phải là sử dụng MatLab, nhưng cùng một thuật toán hoạt động theo cùng một cách chỉ sử dụng Python và NumPy và GNU Octave cũng có API tương tự như MatLab. Để duy trì khả năng tương thích, tôi đã tạo các hàm có cùng tên được sử dụng trong MatLab được gói gọn trong một lớp có tên là Precision . 1. Kiểm traTạo bản sao kho lưu trữ và làm theo các hướng dẫn trong tệp README:
Dưới đây tôi sẽ chỉ ra một số ví dụ, chúng được chứa trong các bài kiểm tra đơn vị. 1.1 Bắt đầu Đồng hồ bấm giờĐo lường thời gian dành cho chế biến.
Đầu ra sẽ trông giống như thế này:
1.2 Phần trăm của tập dữ liệuĐiều này được sử dụng để có được một phần trăm. Trong ví dụ dưới đây, chúng tôi đang tạo ra một phạm vi ngày thứ tự bằng cách cắt 5% từ bên trái và 5% từ bên phải.
Đầu ra sẽ trông giống như thế này:
1.3 Mảng di động (cell2mat)Điều này chuyển đổi một mảng ô thành một mảng thông thường của kiểu dữ liệu cơ bản.
Đầu ra sẽ trông giống như thế này:
1.4 Mảng di động (num2cell)Chuyển đổi mảng thành mảng ô với các ô có kích thước phù hợp.
Đầu ra sẽ trông giống như thế này:
1.5 Chuỗi liên kết (strcat)Điều này nối chuỗi theo chiều ngang bằng cách sử dụng strcat.
Đầu ra sẽ trông giống như thế này:
1.6 Biểu đồ (histc)Điều này đếm số lượng giá trị trong x nằm trong mỗi phạm vi bin được chỉ định. Đầu vào, binranges, xác định điểm cuối cho mỗi thùng. Đầu ra, bincounts, chứa số phần tử từ x trong mỗi thùng.
Đầu ra sẽ trông giống như thế này:
1.7 Độc đáoTìm kiếm các giá trị duy nhất trong một mảng và trả về các chỉ mục, nghịch đảo và đếm.
Đầu ra sẽ trông giống như thế này:
1.8 chồng chéoTìm kiếm các lớp phủ giữa hai mảng trả về chỉ mục.
Đầu ra sẽ trông giống như thế này:
Cân nhắcCó những chức năng không chính xác là MatLab nhưng sẽ đóng vai trò hỗ trợ, tôi hy vọng nó có thể giúp được ai đó. Có một bài viết thú vị trong NumPy cho người dùng đang chuyển từ MatLab sang Python.
0 hữu ích 0 bình luận 12k xem chia sẻ Tôi đã điều chỉnh Đây là M-file của tôi; lưu ý rằng tôi trỏ trực tiếp đến thư mục Python
BIÊN TẬP :Giải quyết vấn đề của tôi, perl.m ban đầu trỏ đến một cài đặt Perl trong thư mục MATLAB bằng cách cập nhật
PATH sau đó gọi Perl. Hàm trên trỏ đến cài đặt Python của tôi. Khi tôi gọi 4 hữu ích 0 bình luận chia sẻ |