Thông báo

Collapse
No announcement yet.

Lập trình GUI trong Matlab

Collapse
This is a sticky topic.
X
X
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • ngohaibac
    started a topic Lập trình GUI trong Matlab

    Lập trình GUI trong Matlab

    Các bác ạ. Em xin mạn phép nói một chút về GUI sau một số chương trình em làm được.

    Một bạn điện tử đưa cho em chuyển giao diện từ Visual Basic 6.0 sang GUI( Graphic User Interface) trong Matlab. Em thấy được một số mặt như sau so với VB:

    - Do Matlab là công cụ tích hợp mạnh các công cụ tính toán nên trong Gui cũng được kế thừa rất là hay như tính toán với ma trận, vecto,.. Do đó dùng GUI ta không phải viết hàm con yêu cầu tính toán nhiều như tích phân, vi phân, tính toán với ma trận( với VB thì chịu thua, viết mã dài chết).
    Thứ nhất là thiết kế trực tiếp trên GUI( gõ lệnh gui trong Matlab) ta có thể nhúng các điều khiển ActiveX, biểu thị Simulink, các hệ trục,..Dùng mô phỏng như thật ấy, các bác có thể xem mấy cái Demo( nhớ cài JRE: Java Runtime
    Evironment nhé down load tại java.sun.com) :

    - Việc thiết kế các khung gắp thả như trong VB, lập trình cho các đối tượng cũng tương đối đơn giản với việc đặt tên cho các đối tượng trong thuộc tính Tag, tên hiển thị trên biểu mẫu với thuộc tính String, ngoài ra còn có nhiều thuộc tính cũng giống như VB như Position, Visiable,..Khi chúng ta tạo một đối tượng, thì sẽ có một hàm Callback được thêm tự động, ví dụ với đối tượng là Edit1 thì tương ứng sẽ có một hàm là Edit1_Callback được tạo ra đáp ứng sự kiện của đối tượng. Với Callback của đối tượng đó ta thao tác với đối tượng thông qua hObject và lấy thuộc tính dùng get, áp đặt thuộc tính thì dùng set:

    Ví dụ:

    Code:
      f=get(hObject,'String');% Lay sau nhap vao Edit1
       f=str2double(f);% chuyen sau thanh kieu Double
       set(hObject,'String','');
    Còn nếu muốn lấy thuộc tính của đối tượng khác thì dùng handles.nhan
    Ví dụ nếu muốn lấy thuộc tính của Edit2 trong hàm Edit1_callback thì dùng:
    Code:
    f2=get(handles.Edit2,'String');
            set(handles.Edit2,'String',' ');
    Để lấy kết quả từ một hàm nào đó bạn có thể dùng lệnh Save để lưu vào Mfile, hoặc dùng biến toàn cục nhưng nên dùng lệnh Save, sau đó muốn láy kết quả thì dùng Load. Cách này rất tốt cho cả các form khác nhau và các ứng dụng như giữa Simulink và GUI.

    Thứ nữa là nếu muốn lập trình cho menu thì tôi thấy là khi ta tạo lên một cái menu như là để mở một cái Form khác thì nếu dùng lệnh form với tên form là tên của form mà bạn cần mở ra. Nếu muốn cho form này luôn hiển thị trên các form khác thì dùng lệnh uiwait(form). Rất đơn giản phải không?Các bác có thể chạy được mấy cái đó trong môi trường Gui thôi( mở Gui và Open Browes đến file cần chạy). Hoặc là dùng lệnh trong command như trên.
    Thứ hai, thiết kế bằng tay: bạn chỉ cần phải thiết kế giao diện ban đầu hơi vất, sau đó là có thể cho thuộc tính Callback gọi một số hàm dưới dạng Mfile riêng rẽ( tức là viết riêng ra). Do đó khi minh gọi dùng cho Callback của các menu thì sẽ ổn thôi. Các bác khi thiết kế thì dùng cái thuộc tính mở Gui ra mà xem, còn thiết kế thì hoàn toàn trong Mfile: ví dụ như: edi1=uicontrol('style','radiobutton',..); Viết mã này cũng hơi dài yêu cầu phải kiên trì. Rất dễ báo lỗi.

    Trên đây là một số nhận xét của tôi không biết có ổn không nhưng chắc phần nào giải quyết cho các bác làm quen với Gui.

    Mình đã sửa lại bài viết cho đúng với thế mạnh của nó. Nếu viết sai thì chết. Thực ra chẳng khó nếu bạn tìm được giải pháp cho đúng. Nó có thể toàn diện ngang với VB có khi còn mạnh hơn về khả năng tính toán. Còn lập trình cấp thấp thì thua là cái chắc.
    Last edited by ngohaibac; 31-12-2005, 15:30.

  • pink1710
    replied
    Xin chào mọi người!
    Mình mới bắt đầu tìm hiểu học Matlab, đến phần lấy tín hiệu từ Scope ở simulink vẽ ở GUI thì không biết phải làm sao, mong các bác xem giúp mình. (mình dùng Matlab R2014a)
    cảm ơn các bác nhiều.
    quockhoa67890@gmail.com

    Leave a comment:


  • alphahero
    replied
    Không còn ai theo dõi đề tài này à ++!

    Leave a comment:


  • alphahero
    replied
    Chào các bạn!
    Mình đang muốn làm một chương trình đơn giản (để học MatLab thôi ), và mình đang muốn giải quyết 2 vấn đề gặp phải như sau:
    1/ Khi làm việc với GUI, việc get giá trị từ scroll chỉ thực hiện khi bắt đầu nhả chuột (tức là khi click vào giữ thì nó không bắt ngay). Vậy mình muốn get giá trị liên tục(tức là kéo đến đâu thì nó get giá trị đến đó) thì phải làm thế nào. Mình đã thử một cách nhưng thấy không an toàn lắm đó là sử dụng callback bắt sự kiện di chuột trong figue, trong callback này mình gọi lại callback của scroll. Nó đạt được kết quả mình mong muốn nhưng nó lại báo lỗi tùm lum trên comandline, kèm theo tiếng báo lỗi rất ức chế(vì khi thao tác thì chuột lúc nào chả di chuyển trong figue chính). Vậy bác nào có cao kiến get giá trị liên tục từ scroll thì giúp mình với ^^
    2/ Mình muốn tạo một chương trình mô phỏng thời gian thực và vẽ đồ thị theo thời gian thực. Để đơn giản mình chọn vi dụ về chuyển động có gia tốc như hồi lớp 10 ^^. trong GUI mình sẽ nhập số liệu về khối lượng và hệ số ma sát. Còn lực tác động mình sẽ cho tùy chỉnh bằng thanh scroll(vì thế mới có vấn đề 1 như mình trình bày ^^!). Đồ thị sẽ vẽ ra gia tốc, vận tốc, vị trị tịnh tiến của vật thể theo thời gian. Và mình cũng chưa biết cách làm thế nào để vẽ được đồ thị này theo thời gian(mình xem một số clip trên mạng thấy có đồ thị chạy từ từ rất trực quan). Câu hỏi này khá mấu chốt để mình hoàn thành công việc tìm hiểu đề ra(mình chỉ qua ví dụ này để học còn bài tập trên trường của mình thì khoai hơn ++).
    Cảm ơn các bạn!

    Leave a comment:


  • quanghuy7382
    replied
    Tình hình là mình đang làm về đề tài phân loại sản phẩm theo màu sắc (4 cấp màu) dùng matlab thông qua Webcam. Mà mình thì không rành lắm về Matlab nên rất mong được mọi người giúp đỡ.
    Thank you!

    Leave a comment:


  • chinh_kty
    replied
    Xin cảm ơn, bài viết rất là hay. Mình đang tìm hiểu dần. Thanks bắc nhé

    Leave a comment:


  • cauutonline
    replied
    Mọi người có thể chỉ mình hàm để lấy các giá trị trên các tetxbox rồi truyền vào cổng COM ko. Đồ án của mình là điều khiển động cơ DC bằng board Arduino uno, mình ko biết làm sao để arduino receive nhiều giá trị từ cổng COM về và đặt vào đúng các biến. Ai biết các hàm nhận data trong arduino thì giúp mình với nhé, cảm ơn nhiều
    Attached Files

    Leave a comment:


  • crazyboy88ak
    replied
    mình có 1 file btap.fis mình có thể xuất ra cái đồ thị dạng 'Surface Viewer' len GUI được không? nếu có thì mình phải thực hiện như thế nào? Mong các bạn chỉ giáo. thanks.

    Leave a comment:


  • hieunt91
    replied
    Bạn nào cho mình hỏi cách để hiển thị DICOM info trên một listbox trong GUI thế nào?
    Thanks

    Leave a comment:


  • hieunt91
    replied
    Mình cũng đang làm đề tài hiển thị và xử lý ảnh DICOM mà khó quá

    Leave a comment:


  • haphuong2010
    replied
    Hi pros.
    Giả sử mình muốn đóng gói chương trình giải phương trình bậc 2 lập trình trong Matlab rồi đưa sang máy khác chạy mà không cài Matlab thì làm sao?Ai biết chỉ chi tiết mình với nha?
    Thanks!!!!

    Leave a comment:


  • quachanan
    replied
    xin anh em giúp đỡ.

    Nguyên văn bởi thaivu_1991 Xem bài viết
    Chào các bạn!
    Mình đọc hết topic này và mình thấy có một vài bạn cũng có câu hỏi giống mình nhưng chưa được các bạn chỉ rõ ràng..Mình xin được nêu lại thắc mắc mà nhiều bạn mới học GUI như mình gặp phải:
    Cách tạo nhiều form cho 1 project và cách liên kết giữa các form này. Theo như anh Bắc thì mình dùng lệnh load (tên form muốn truy cập), mình truy cập được vào form mà mình muốn nhưng ở trên cửa sổ command window thì nó lại báo lỗi sử dụng lệnh load:
    Error using load
    Argument must contain a string.
    Mong các bạn giải đáp thắc mắc này giúp mình với các bạn mới học GUI với. Cảm ơn các bạn. (à mình dùng matlab 2011b).
    Video 3 đưa ảnh lên GUI | Blog cho người học Matlab theo như trong video này thì khi nhấn nút brower thì sẽ hiện đường dẫn cho mình chọn ảnh để hiển thị,bây giờ mình muốn thay đổi là khi nhấn nút thì sẽ hiển thị ảnh mà mình cài đặt sẵn,mình làm nhiều nút sẽ hiển thị nhiều ảnh nhưng khi mình sửa trong hàm imread thành đường dẫn đến file thì báo lỗi,anh em nào biết xin chỉ giúp,cảm ơn.

    Leave a comment:


  • thaivu_1991
    replied
    Chào các bạn!
    Mình đọc hết topic này và mình thấy có một vài bạn cũng có câu hỏi giống mình nhưng chưa được các bạn chỉ rõ ràng..Mình xin được nêu lại thắc mắc mà nhiều bạn mới học GUI như mình gặp phải:
    Cách tạo nhiều form cho 1 project và cách liên kết giữa các form này. Theo như anh Bắc thì mình dùng lệnh load (tên form muốn truy cập), mình truy cập được vào form mà mình muốn nhưng ở trên cửa sổ command window thì nó lại báo lỗi sử dụng lệnh load:
    Error using load
    Argument must contain a string.
    Mong các bạn giải đáp thắc mắc này giúp mình với các bạn mới học GUI với. Cảm ơn các bạn. (à mình dùng matlab 2011b).

    Leave a comment:


  • nho_oi
    replied
    chào cả nhà! mình đang làm mô phỏng về hiện tượng tán sắc trong truyền dẫn quang, nhưng mới làm quen matlab, nói thẳng là chua biết j, các bạn có mô phỏng hay giáo trình mô phỏng thì chỉ mình với, có tài liệu lam ví dụ càng tốt. mình cần gấp. help me, cám ơn trước nha

    Leave a comment:


  • vanchiennd
    replied
    thanks you anh ngohaibac nhe..em cũng đang học GUI. Nhưng bác cho em hỏi, khi gọi hàm ấy, nó hiện lên những dòng xanh xanh ấy có tác dụng j vậy. Mình xoa đi và chỉ ghi code của mình đc k ạ?

    Leave a comment:

Về tác giả

Collapse

ngohaibac Tìm hiểu thêm về ngohaibac

Bài viết mới nhất

Collapse

Đang tải...
X