Nhà thiết kế ứng dụng MATLAB so với Python

MATLAB là một ngôn ngữ lập trình cấp cao mạnh mẽ. Matlab được sử dụng rộng rãi để thiết kế hệ thống bởi các kỹ sư và nhà khoa học và tất cả chúng ta đều biết rằng cách tốt nhất để thể hiện bất kỳ ý tưởng nào là sử dụng GUI đơn giản nhưng hiệu quả. Trình tạo ứng dụng Matlab cung cấp cho bạn sức mạnh để xây dựng các ứng dụng khác nhau, để thể hiện ý tưởng của bạn theo cách thân thiện với GUI.  

Trong bài viết này chúng ta sẽ tìm hiểu cách tạo bất kỳ ứng dụng nào trong Matlab App Designer

Bước 1. Bạn có thể bắt đầu làm việc trên MATLAB APP Builder theo hai cách. Vào Trang chủ>Mới>Ứng dụng.  

Ngoài ra, để chuyển đến phần Trình tạo ứng dụng Matlab, Chọn Ứng dụng từ Thanh thực đơn, sau đó chuyển đến Ứng dụng thiết kế

Bước 2. Một cửa sổ bật lên mới được mở. Nó cung cấp một bố cục khác để nêu rõ ứng dụng. Nó cũng đã đến các ví dụ để hiểu rõ hơn

Bước 3. Bạn có thể chọn bất kỳ tùy chọn Ứng dụng nào để xây dựng ứng dụng MATLAB. Chủ yếu có ba bố cục có sẵn khi di chuyển. Chúng bao gồm

  • Ứng dụng trống
  • Ứng dụng 2 bảng với Tự động chỉnh lại dòng
  • Ứng dụng 3 bảng với Tự động chỉnh lại dòng

Bước 4. MATLAB bao gồm nhiều thành phần khác nhau như

  • Các thành phần
  • Tùy chỉnh các thành phần

Các thành phần là các hình dạng dựng sẵn được thiết kế cho các tác vụ cụ thể và có thể được nhập vào tab thiết kế. Trong Matlab, Thư viện thành phần nằm ở phần ngoài cùng bên trái của cửa sổ.  

Để nhập bất kỳ thành phần nào vào thiết kế của bạn, hãy nhấp chuột phải vào thành phần đó và kéo nó vào tab thiết kế và thả nó vào bất cứ nơi nào bạn muốn đặt nó

Bằng cách sử dụng các thành phần tùy chỉnh, bạn có thể tùy chỉnh các thành phần của mình theo yêu cầu của mình, sử dụng trình duyệt Thành phần. Nó nằm ở phần ngoài cùng bên phải của Cửa sổ Trình tạo ứng dụng. Sử dụng Trình duyệt Thành phần, bạn có thể thay đổi thông tin về thành phần, Phông chữ và Màu sắc, Tương tác với người dùng, Vị trí của thành phần trong chế độ xem thiết kế, Điều khiển Thực thi Gọi lại, Thành viên Cha mẹ/Con và Số nhận dạng. Nó cũng chứa danh sách thành phần được sử dụng trong ứng dụng của bạn

Hãy cùng hiểu thêm về cách xây dựng ứng dụng bằng cách tạo một ứng dụng đơn giản tính toán cả lãi đơn và lãi kép. Để làm việc trên ứng dụng này, hãy tạo một sổ làm việc trống đã chọn. Bây giờ không gian làm việc sẽ được mở. Bạn có thể thiết kế ứng dụng trong tab Thiết kế và viết mã trong tab Mã.  

Việc thiết kế ứng dụng cần năm trường kiểm tra chỉnh sửa [dạng số], ba trong số đó có thể chỉnh sửa được cho tiền gốc, tỷ lệ và thời gian, trong khi hai trường không thể chỉnh sửa giữ giá trị của Lãi đơn và Lãi gộp. Bạn cũng có thể thêm nhãn để có chế độ xem thiết kế tốt hơn. Đồng thời nhập một nút thực hiện toàn bộ phép tính và hiển thị kết quả

Bây giờ hãy chuyển sang phần mã hóa. Để thêm chức năng của nút Tính toán, hãy thêm chức năng đẩy lùi. Bạn có thể thêm chức năng đẩy lùi bằng cách nhấp chuột phải vào nút và sau đó chuyển đến gọi lại rồi nhấp vào thêm chức năng đẩy lùi.  

Tôi đã làm tất cả công việc nhóm của tuần này một mình. Tôi có một số kinh nghiệm trong việc tạo giao diện trong GUI Qt và MATLAB, sử dụng ngôn ngữ C ++, Python và MATLAB. Vì vậy, tôi sẽ so sánh các nền tảng và ngôn ngữ này cho bài tập nhóm tuần này

Qt so với. GUI MATLAB

Qt.
Qt là bộ công cụ widget nguồn mở và miễn phí để tạo GUI và ứng dụng. Nó đa nền tảng và bao gồm nhiều loại hệ điều hành [bao gồm Linux, Windows, macOS, Android hoặc các hệ thống nhúng]. Sự phát triển và cải tiến của nền tảng này đã diễn ra rất nhanh trong những năm gần đây.
Nó có một IDE rất có khả năng [Qt Creator], rất thân thiện với người dùng và có một tài liệu và hướng dẫn tuyệt vời. Nó hỗ trợ nhiều ngôn ngữ bao gồm C ++ [với các tính năng linh hoạt và giao tiếp giữa các đối tượng mạnh mẽ], QML [ngôn ngữ khai báo, dựa trên JavaScript] và Python [Qt cho Python, cho phép người dùng phát triển ứng dụng Qt và QML dễ dàng từ Python].
Có một số thư viện vẽ sơ đồ trưởng thành [e. g. QCustomPlot và QWT] và các thư viện thử nghiệm [e. g. QTestLib] được phát triển cho Qt. Trên hết, nó cung cấp hỗ trợ quốc tế hóa [hệ thống dịch thuật Qt], cho phép bạn có một ứng dụng đa ngôn ngữ.

GUI MATLAB.
MATLAB hỗ trợ phát triển ứng dụng với các tính năng giao diện người dùng đồ họa [GUI]. MATLAB bao gồm GUIDE [môi trường phát triển GUI] để thiết kế đồ họa GUI. Nó cũng có các tính năng vẽ đồ thị được tích hợp chặt chẽ. Nó không phải là nguồn mở cũng không miễn phí, nhưng hầu như tất cả các tổ chức nghiên cứu đều cung cấp cho nhân viên của họ quyền sử dụng MATLAB, vì đây là một bộ công cụ rất linh hoạt và được ổn định cực kỳ tốt. Sau khi thiết kế GUI, với sự trợ giúp của Trình biên dịch MATLAB, bạn chỉ có thể tạo các chương trình dưới dạng ứng dụng web hoặc máy tính để bàn độc lập.

C ++ so với. MATLAB so với. con trăn

C++.
C++ là ngôn ngữ hướng đối tượng dựa trên ngôn ngữ C. Nó được phát triển để tối ưu hóa hiệu suất là chìa khóa trong khi giữ cho mã được tổ chức. Có thể đạt được hiệu suất rất cao, nhưng mã của bạn cần phải tốt và viết mã C++ tốt có thể khó hơn các ngôn ngữ khác. Vì vậy, sử dụng C++ mang lại cho bạn lợi ích khi chạy ứng dụng của mình ở tốc độ cao. Với C++, bạn có quyền truy cập vào rất nhiều thư viện [nhiều thư viện Python chỉ là các trình bao bọc xung quanh các thư viện C++]. Nó có nhiều tài liệu và hướng dẫn, và một cộng đồng người dùng rộng lớn.
Đây là ngôn ngữ lập trình cấp thấp hơn so với các ngôn ngữ khác. Vì vậy, phải mất nhiều thời gian hơn để học và thậm chí lâu hơn để học viết mã đúng cách. Lập trình với C++ thường yêu cầu gỡ lỗi nhiều và mất nhiều thời gian.

MATLAB.
MATLAB [phòng thí nghiệm ma trận] là một ngôn ngữ lập trình và môi trường điện toán số đa mô hình được phát triển bởi MathWorks. Giao tiếp với các chương trình được viết bằng các ngôn ngữ khác, bao gồm C, C++, Java và Python rất đơn giản. Viết mã bằng MATLAB thật dễ dàng vì đây là ngôn ngữ cấp cao hơn [chức năng cơ bản đã được nhúng] và viết mã, trực quan hóa kết quả và gỡ lỗi diễn ra trong một môi trường tích hợp. Nó có nhiều tài liệu và hướng dẫn, và một cộng đồng người dùng rộng lớn.
Làm việc với ma trận nhiều chiều rất hiệu quả trong MATLAB [đúng như tên gọi của nó. ] và nó có một bộ hộp công cụ lớn. Điều đó nói rằng, nói chung, một chương trình MATLAB điển hình chạy khoảng 1. Chậm hơn 5-2 lần so với chương trình C++. Thông thường, mọi người kết thúc mã hóa các phần tính toán chuyên sâu trong C và tích hợp nó với mã MATLAB. Ngoài ra, bạn cần viết mã kiểu MATLAB, khác với các ngôn ngữ lập trình đa năng như C++ hoặc Python. Nếu không, bạn sẽ kết thúc với một đoạn mã rất chậm.

Trăn.
Python được phát triển với mục đích tạo mã dễ học, dễ đọc và đơn giản hơn là phức tạp. Nó hỗ trợ nhiều mô hình lập trình, bao gồm lập trình thủ tục, hướng đối tượng và chức năng. Python có các thư viện tiêu chuẩn toàn diện và mạnh mẽ. Viết mã bằng Python rất nhanh và mã đã viết có thể dễ dàng sử dụng lại [đối với nhiều chức năng, chỉ cần sao chép, dán mã miễn phí từ internet]. Giống như MATLAB và C++, cộng đồng Python cũng rất mạnh.
Mã viết bằng Python có thể dễ trở nên lộn xộn đối với các dự án lớn và vì đây là ngôn ngữ được thông dịch nên đôi khi việc tìm lỗi trong mã có thể khó khăn. So với C++, các chương trình của bạn trong Python thường sẽ chạy chậm hơn.

Ứng dụng của tôi

Để kết thúc phần trước, theo nguyên tắc chung, hãy sử dụng MATLAB/Python để tạo mẫu các thuật toán mới và C++ trong sản xuất. Vì ứng dụng của tôi chỉ là nguyên mẫu và tôi cần nó có khả năng chạy trên các thiết bị Windows và Android, nên tôi đã sử dụng kết hợp Python và Qt, cụ thể là PyQt5

Đối với nhiệm vụ của tuần này, tôi đã thiết kế và viết mã giao diện người dùng mà sau này tôi có thể sử dụng trong giai đoạn sơ bộ của dự án cuối cùng của mình. Trong dự án cuối cùng của tôi, tôi có một cảm biến nhiệt độ và dòng điện làm đầu vào và động cơ DC, rơle và dải đèn LED làm đầu ra.
Trong dự án cuối cùng của mình, tôi sẽ sử dụng bộ vi điều khiển ATTiny44 làm bộ não của hệ thống nhúng và hai tùy chọn giao tiếp, một tùy chọn nối tiếp có dây [FTDI-USB] và một tùy chọn không dây thông qua WiFi. Trong quá trình phát triển dự án của tôi, kế hoạch của tôi là thử nghiệm các chức năng cơ bản của dự án thông qua kết nối nối tiếp ngay từ đầu. Do đó, ở đây, tôi đã tạo một ứng dụng giao diện người dùng trên máy tính để bàn bằng PyQt5 giao tiếp với bảng vi điều khiển và kết hợp một số chức năng mà tôi dự định triển khai trong thiết kế dự án của mình.
Bo mạch vi điều khiển mà tôi sử dụng là bo mạch được thiết kế và triển khai trong tuần Thiết bị đầu vào. Bo mạch này có bộ vi điều khiển ATTiny44 và cảm biến nhiệt độ RTD 1k ohm 1206, đã được kiểm tra trong bài tập của tuần đó [thông qua màn hình nối tiếp]. Bảng cũng có một đèn LED mà tôi đã nhắm mục tiêu làm đầu ra. Quả sung. 1 cho thấy phần cứng của nhiệm vụ này.

Hình 1. Bảng vi điều khiển với cảm biến nhiệt độ và đèn LED trên bo mạch

Dự án cuối cùng của tôi là máy sưởi khối thông minh. Trong giao diện người dùng, người dùng đặt thời gian mà họ muốn động cơ ấm và sẵn sàng. Giao diện người dùng gửi thời gian do người dùng đặt và thời gian hiện tại tới vi điều khiển. Sau đó, bộ vi điều khiển sẽ tính toán thời gian tối ưu hóa để bắt đầu quá trình gia nhiệt. Nó làm như vậy với sự trợ giúp của nhiệt độ đo được từ cảm biến nhúng. Khi thời gian bắt đầu đến, nó kết nối máy sưởi với nguồn điện và hiển thị trạng thái hẹn giờ bằng đèn LED RGB. Ở đây thay vì dùng relay và led RGB thì mình dùng led onboard cho đơn giản. Khi hoàn thành công việc, đèn LED sẽ tắt và giao diện người dùng hiển thị thông báo. Giao diện người dùng cũng hiển thị kết quả đọc của giá trị nhiệt độ.
Hình. 2 hiển thị một số ảnh chụp nhanh về giao diện mà tôi đã viết dưới dạng bài tập tuần này. Giao diện người dùng hiển thị thời gian hiện tại dưới dạng đồng hồ kỹ thuật số ở phần trên của giao diện người dùng. Người dùng nhập thời gian sẵn sàng và nhấn nút 'Đặt thời gian sẵn sàng' [ảnh chụp nhanh phía trên bên trái của Hình. 2]. Thời gian khởi động bộ gia nhiệt được tính toán [ở đây nó được cố định là 5 giây trước thời điểm sẵn sàng] và đồng hồ đếm ngược đến thời gian bắt đầu được hiển thị trong giao diện người dùng [ảnh chụp nhanh phía trên bên phải nếu Hình. 2]. Khi hết thời gian đếm ngược, đèn LED sẽ bật trong 5 giây và một bộ đếm ngược khác được hiển thị [ảnh chụp nhanh phía dưới bên trái của Hình. 2], và cuối cùng, khi đạt đến thời gian do người dùng cài đặt, đèn LED sẽ tắt và thông báo [Heater is OFF] được hiển thị [ảnh chụp nhanh phía dưới bên phải của Hình. 2].
Hai thiết kế đồ họa cho dự án cuối cùng được triển khai trong giao diện người dùng, nhưng mã cho chức năng của chúng chưa được hoàn thành vào thời điểm này. Hai tính năng này có thể được nhìn thấy trong ảnh chụp nhanh. Một là màn hình hiển thị nhiệt độ và thứ hai là điều khiển cuộn dây nóng khối từ giao diện người dùng.


Hình 2. ảnh chụp nhanh giao diện người dùng

Đây là video về quy trình kiểm tra, đã được giải thích ở trên

Đây là một ảnh chụp màn hình của mã GUI


Hình 3. mã GUI

Đây là lần đầu tiên tôi sử dụng PyQt5 để xây dựng GUI. Tôi đã tìm thấy một loạt video hướng dẫn ngắn hữu ích trên YouTube để bắt đầu với PyQt5. Để tạo và hiển thị một cửa sổ cơ bản, trước tiên chúng ta cần nhập PyQt5 và PyQt5. QtWidgets để có quyền truy cập vào giao diện người dùng đồ họa. Tiếp theo, chúng ta cần tạo một đối tượng ứng dụng để có quyền truy cập vào vòng lặp sự kiện. Sau đó, chúng tôi tạo một QtWidgets trên cửa sổ, hiển thị cửa sổ và bắt đầu vòng lặp sự kiện bằng cách sử dụng ứng dụng. giám đốc điều hành [].
Như có thể thấy trong ảnh chụp mã, tôi đã viết mã hướng đối tượng. Tôi đã tạo một lớp và đặt tên là Window, được kế thừa từ QtGUi. QMainWindow. Tiếp theo, tôi tạo một phương thức __init__ [Hình. 4] và thiết lập các tham số hình học bên trong nó, đồng thời gọi phương thức init_ui[] để tạo các widget trên cửa sổ.

hinh 4. mã phương thức __init__

Hình 5 cho thấy một phần của phương thức init_ui làm cho QLable hiển thị thời gian hiện tại và QPushButton đặt thời gian làm nóng. Khi nút được nhấp, nó sẽ chuyển qua phương thức set_button_clicked

Hình 5. Tạo QLabel và QPushButton

Để theo dõi thời gian [e. g. thời gian hiện tại, thời gian còn lại để bắt đầu làm nóng, v.v. ], tôi đã tạo bộ đếm thời gian bằng cách sử dụng luồng. Hẹn giờ, chạy định kỳ mỗi giây [Hình. 6]

Hình 6. hẹn giờ định kỳ

Tôi đã sử dụng pySerial để gửi lệnh qua cổng nối tiếp. Các tin nhắn được gửi để bật và tắt lò sưởi [trong trường hợp này là đèn LED hiện có trên bảng] và rất đơn giản, chúng tôi gửi '1' là lệnh bật và '0' để tắt. Đây là một phần mã để gửi lệnh bật bằng GUI tới ATtiny44

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

MATLAB có khả năng tính toán rất mạnh, Python rất khó làm . Python không hỗ trợ ma trận, nhưng có thể đạt được thư viện NumPy. MATLAB đặc biệt giỏi xử lý tín hiệu, xử lý ảnh, trong đó Python không mạnh và hiệu suất cũng kém hơn nhiều.

MATLAB hay Python tốt hơn cho máy học?

Phần này có câu trả lời dễ dàng. Python thắng Matlab . Python có rất nhiều thư viện và gói cho cả mô hình máy học cũ và mới. Thêm vào đó, Python là ngôn ngữ được sử dụng rộng rãi nhất cho nghiên cứu máy học hiện đại trong ngành công nghiệp và học thuật.

Cái nào tốt hơn để xử lý hình ảnh MATLAB hoặc Python?

Trong kỹ thuật, Python cũng giúp thực hiện mô phỏng, rung động, mô hình hóa kỹ thuật và chuyển động động. Trong khi đó, hộp công cụ IC để xử lý hình ảnh trong MATLAB làm cho nó trở thành một lựa chọn tốt hơn cho việc phân đoạn, trích xuất và phân tích dữ liệu hình ảnh . Nhưng trong Python, xử lý hình ảnh dựa trên các gói bên ngoài.

Python có đang tiếp quản MATLAB không?

Không, nhưng tôi hy vọng điều đó xảy ra và nghĩ rằng điều đó sẽ xảy ra . Gặp JupyterLab. JupyterLab là một IDE khoa học dữ liệu chính thức. Nó hỗ trợ lập trình bằng Python, tạo các biểu đồ và sơ đồ tương tác, trực quan hóa dữ liệu, sổ ghi chép tương tác, toán tượng trưng với sympy và mọi thứ và mọi thứ mà Python hỗ trợ.

Chủ Đề