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

  • #46
    Bản MATLAB 6.5 nhà tớ không chạy được lệnh mcc -m, thông báo lỗi ở lệnh mbuild. nhưng lệnh mcc -B sgl thì chạy tốt. Dịch được ra file .exe, và tớ cũng đã cho nó chạy được trên một máy tính không cài MATLAB .

    Đáng tiếc là MATLAB add-in trong Visual C++ không chạy được, toàn báo lỗi, thế mới đau chứ! Các sếp có biết tại sao không???
    PNLab
    Mạch nạp/debug ULink2, Jlink ARM USB
    Mạch nạp AVR, PIC, 8051, MSP430 USB
    Mạch phát triển STM32, ARM9, ARM11
    more...www.pnlabvn.com

    Comment


    • #47
      Em xin tiếp tục chủ đề này.

      Các bạn nên nhớ file ex1.m chỉ như là một ví dụ khi dịch có warning thì bạn cứ bỏ qua nha, chưa cần quan tâm mà chỉ quan tâm đến cách thức đã còn chi tiết bàn sau.

      2/ Dịch để tạo ra thư viện từ M file ex1.m chúng ta dùng lệnh sau:
      Code:
      >>mcc -l ex1.m
      Khi đó trình biên dịch sẽ tạo ra các file sau:
      • ex1.c
      • ex1.h
      • ex1.dll
      • ex1.lib
      • ex1_main.c
      • ex1_mcc_component_data.c
      • ex1.ctf


      Để có thể test được các component bạn phải copy thư mục <thư mục cài Matlab7>\bin\win32 vào thư mục có chứa thư viện liên kết động của bạn

      Để triển khai được các ứng dụng của bạn trong các máy PC mà không cài Matlab có version giống với máy phát triên các component đó thì bạn đóng gói các component đó và thiết lập trên máy đó như sau:
      • Cài đặt MATLAB Component Runtime(MCR) bằng cách copy file MCRInstaller.exe trong thư mục <thư mục cài Matlab>\toolbox\compiler\deploy\win32 vào một thư mục và cài file đó.
      • Copy component đó và file .ctf của trong list file vừa được tạo vào một thư mục nào đó ví dụ: C:\approot. Rồi bạn copy thư mục <ổ cài đặt>:\Program Files\MathWorks\MATLAB Component Runtime\v70\bin\win32vào trong thư mục đó. Rồi test ứng dụng.


      Bây giờ em xin dừng bút, tắt máy ôn thi tí đã không có điểm kém quá mama mắng chết.

      Chúc mọi người thành công.
      Technical sale at WT Microelectronics S'pore
      Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
      Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

      Comment


      • #48
        Hôm nay vừa đi liên hoan kết thúc học kì về, dù vẫn hơi drunk nhưng thấy mọi người sôi nổi quá nên cũng mạo muội viết đôi dòng. Ngày mai tỉnh táo sẽ xem lại xem có viết gì sai không

        Về vấn đề dịch chương trình Matlab hay mô hình Simulink ra executable module (chương trình độc lập, COM, Realtime Workshop, xPC,...) thì quan điểm của tôi như sau: chỉ hữu ích trong 1 số ứng dụng hạn chế, chủ yếu là để experiment, test,..., do vậy không thực sự đáng để bỏ công nghiên cứu nhiều. Điều này có thể làm các bạn hơi cụt hứng, tuy nhiên đây chỉ là quan điểm cá nhân của tôi thôi.

        Trước hết ta thử nghĩ xem khi nào cần dịch ra executable module:
        • Khi cần sử dụng một đoạn mã Matlab hay một thuật toán đã phát triển với Matlab trong một phần mềm khác độc lập với Matlab, ví dụ như các phần mềm (thương mại) phục vụ thiết kế, tính toán, xử lý (ảnh, số liệu)...
        • Khi cần thực hiện (implement) các hệ thống thực (theo mô hình đã xây dựng trong Matlab/Simulink). Các hệ thống kiểu này thường là các hệ thống nhúng (embedded systems), hệ thống thời gian thực (real-time systems),...


        Bây giờ thử phân tích kĩ hơn 1 chút về từng nhu cầu trên.

        Về nhu cầu thứ nhất, thường chúng ta cần sử dụng mã/thuật toán đã xây dựng trên Matlab trong một phần mềm khác, nghĩa là phần mã Matlab đó chỉ là một phần nhỏ mà thôi. Các phần mềm này thường được phát triển bằng 1 ngôn ngữ khác như C, C++, Java, C# (theo quan sát của tôi, Java được sử dụng rất phổ biến trong các trường ĐH Mỹ). Dù Matlab cho phép phát triển ứng dụng với GUI, cũng có I/O, interact với users,... nhưng hiện tại vẫn không thể so sánh được với các ngôn ngữ lập trình kể trên. Vì vậy việc dịch chương trình Matlab ra stand-alone apps, theo tôi, hầu như chẳng để làm gì. Khẳng định luôn là việc làm này không giúp cho chương trình viết trên Matlab chạy nhanh hơn 1 cách đáng kể (không ít người nghĩ như vậy vì cho rằng machine code sẽ chạy nhanh hơn nhiều so với Matlab script). Muốn sử dụng được mã Matlab trong các chương trình viết bằng ngôn ngữ khác thì cần phải hoặc là dịch được sang thư viện lập trình (lib, dll) hoặc là dịch sang các component (COM). Có lẽ đó là lí do vì sao trong các phiên bản Matlab gần đây đã đưa thêm COM Builder (tôi đoán bừa là mcc không thực sự hữu ích & không được dùng nhiều trước khi có COM Builder). Tôi không cài COM Builder nên không rõ khả năng của nó đến đâu.

        Về nhu cầu thứ 2, theo tôi thì Real-time workshop & xPC mặc dù rất tiện lợi (dịch thẳng từ Simulink model sang embedded software thông qua C) nhưng tôi nghĩ rằng nó chỉ phù hợp với các ứng dụng đơn giản (embedded software trên PC) & các tests, experiments. Nếu để lập trình cho embedded systems, đặc biệt là các (hard) real-time systems, thì người ta vẫn dùng trực tiếp các ngôn ngữ lập trình chuyên dụng như ADA (Bộ QP Mỹ), Giotto, ESTEREL, LUSTRE,... hay ít ra là C. Người ta cũng quan tâm nhiều đến vấn đề architecture đối với real-time systems hơn là việc dùng ngôn ngữ cụ thể nào. Tất nhiên những ngôn ngữ chuyên dụng kể trên sẽ hỗ trợ trực tiếp & tốt hơn cho các architecture đó. Điều này đặc biệt đúng trong các ứng dụng đòi hỏi độ an toàn cao, ví dụ như trong máy bay, tàu cao tốc, tàu vũ trụ. Sau 1 thời gian tìm hiểu RTW & xPC của Matlab, tôi thấy không thực sự cần lắm nên không cài nữa, vì vậy cũng không rõ bây giờ đã phát triển đến mức nào. Nhưng tôi nghĩ rằng hiện tại nó vẫn chỉ thích hợp cho experiment & test là chính. Và tôi cũng không thực sự rõ lắm về architecture của real-time systems tạo ra từ Simulink RTW & xPC.

        Thêm 1 ý nhỏ là tôi thấy việc dùng Matlab Compiler khá đơn giản, đọc kĩ help 1 chút là có thể làm ngon lành.

        Tóm lại quan điểm của tôi là chẳng cần bỏ nhiều thời gian vào Matlab compiler làm gì. Chỉ cần biết 1 chút xíu để khi cần dùng thì biết làm thế nào hoặc tìm help ở đâu. Việc tìm hiểu kĩ hơn về các toolbox, các hàm, cách lập trình Matlab (kĩ năng vectorization,...) theo tôi là quan trọng hơn.

        P.S: tôi nhìn từ góc độ academic & research nhiều hơn là industry, nên có thể không chính xác lắm. Có ai biết liệu trong thực tế, khi implement (không phải test) các hệ thống điều khiển (real-time) cho các thiết bị như ô tô, tàu, máy bay, đặc biệt là ở các phần critical, người ta có thiết kế trên Simulink hoặc các phần mềm tương tự rồi compile thẳng ra software hay không? Tôi thấy ở Mỹ có nhiều project về chuyển tự động các mô hình sang real-time software code, hoặc xây dựng các ngôn ngữ lập trình chuyên dụng, nhưng nếu thực tế người ta đã toàn dùng Simulink & RTW thì mấy cái project đó xem chừng hơi bị lãng phí. Một điều thú vị tôi mới phát hiện ra là 1 giáo sư ở chỗ tôi, là chair của group chuyên về real-time embedded software của IEEE, không hề biết 1 chút gì về Simulink, thậm chí mới chỉ biết là có 1 cái tên gọi là Simulink chứ chưa hề dùng bao giờ.
        Truong Nghiem
        ESE Department, GRASP Lab
        School of Engineering and Applied Science
        University of Pennsylvania

        Comment


        • #49
          mình đang làm về tín hiệu DTMF, đây là đoạn code mình kiếm được
          nhưng khi mình thực hiện thì nó báo lỗi như sau:
          ??? Undefined function or variable 'cheby1'.

          Error in ==> C:\Documents and Settings\mummy\Desktop\DTMFdecoder\subdecode.m
          On line 10 ==> [b,a]=cheby1(cn,cr,cl);

          Error in ==> C:\Documents and Settings\mummy\Desktop\DTMFdecoder\decode.m (b1_Callback)
          On line 88 ==> subdecode;

          Error in ==> C:\MATLAB6p5\toolbox\matlab\uitools\gui_mainfcn.m
          On line 66 ==> feval(varargin{:});

          Error in ==> C:\Documents and Settings\mummy\Desktop\DTMFdecoder\decode.m
          On line 42 ==> gui_mainfcn(gui_State, varargin{:});

          ??? Error while evaluating uicontrol Callback.
          bạn nào chỉ giúp với thanks
          mình dùng matlab 6.5

          Comment


          • #50
            Bác nhắp luôn vào cái file down về để chạy thì nó sẽ báo lỗi thế đấy , bác hãy mở cửa sổ matlab ra chạy lệnh guide sau đó mởi file .fig là file bác down về nếu chạy được thì ok
            Dấu hỏi vòng vòng
            Dấu ngã cong cong
            Khi ngã ta lại hỏi
            Ngã lần này có đứng dậy nữa không

            Comment


            • #51
              Form...?

              tại sao không thấy ai viết về việc tạo nhiều Form (Figure) trong GUI nhỉ?
              nếu một dự án mà chỉ có 1 form thì khả năng sử dụng giới hạn quá
              xin các bác cho ý kiến

              Comment


              • #52
                Chào bạn, việc tạo nhiều form trong GUI thì rất đơn giản mà. Mình đã làm cái này tức là giống trong Simulink chọn Setting cho chương trình ControlDCMotor, nhưng viết xong rùi bị virus xoá hết cả ổ nên không còn gì cả , chưa có thời gian làm lại vì làm cái này hơi mất thời gian.

                Bạn có thể thấy việc làm 2 form thông qua ấn nút close trong chương trình ControlDCMotor đó bạn. Việc dùng nhiều form khi lập trình thì vấn đề cần quan tâm là việc trao đổi dữ liệu giữa các form với nhau phải thông qua workspace (mình đã dùng nhiều cách rùi nhưng thấy đây là cách hiệu quả nhất) qua lệnh loadsave vào file .mat.

                Có thời gian mình sẽ viết bài cụ thể về vấn đề này.

                Chúc các bạn thành công.
                Technical sale at WT Microelectronics S'pore
                Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                Comment


                • #53
                  Nguyên văn bởi ngohaibac Xem bài viết
                  Chào bạn, việc tạo nhiều form trong GUI thì rất đơn giản mà. Mình đã làm cái này tức là giống trong Simulink chọn Setting cho chương trình ControlDCMotor, nhưng viết xong rùi bị virus xoá hết cả ổ nên không còn gì cả , chưa có thời gian làm lại vì làm cái này hơi mất thời gian.

                  Bạn có thể thấy việc làm 2 form thông qua ấn nút close trong chương trình ControlDCMotor đó bạn. Việc dùng nhiều form khi lập trình thì vấn đề cần quan tâm là việc trao đổi dữ liệu giữa các form với nhau phải thông qua workspace (mình đã dùng nhiều cách rùi nhưng thấy đây là cách hiệu quả nhất) qua lệnh loadsave vào file .mat.

                  Có thời gian mình sẽ viết bài cụ thể về vấn đề này.

                  Chúc các bạn thành công.
                  chào Bắc
                  cám ơn vì bài viết của bạn
                  theo bạn thì có những cách nào để link các fig với nhau và ưu nhược điểm mỗi cách thế nào?
                  nếu có example code thì càng tốt

                  à Bắc cho tớ hỏi có cách nào viết chữ dạng Latex (VD alpha beta ...) lên mô hình Simulinhk(vd lên transfer function) không?

                  Comment


                  • #54
                    Mình đã từng thử nhiều cách để link các form với nhau nhưng thấy có thể dùng các cách sau: lưu dữ liệu vào một file .mat và dùng các lệnh load, save để lấy dữ liệu và lưu dữ liệu vào. Như thế các form có thể dùng chung một dữ liệu. Nhưng nếu dữ liệu của form sau được sử dụng của form trước thì có thể là khi form sau chạy xong và biến mất thì ta mới nên cho form trước active và khi đó nên có biện pháp cập nhật dữ liệu vào như là thêm nút Update có tác dụng lây dữ liệu vào chẳng hạn. Khi nào nhớ ra cách nào khác mình sẽ post sau.

                    Còn example code thì tớ k còn trong máy rùi. Bạn lên site mathworks.com xem nhé.

                    Còn viết chữ Latex vào trong Simulink thì mình chưa nghiên cứu bạn ạ nên mình không biêt.

                    Chúc các bạn thành công.
                    Technical sale at WT Microelectronics S'pore
                    Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                    Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                    Comment


                    • #55
                      linh vuc nay rat hay minh cung dnag hoc ....

                      Comment


                      • #56
                        Chào các bạn. Việc viết các công thức Latex trong Matlab là có thể thực hiện được.

                        Mình xin trích bài viết của anh Thevane:
                        Với các đối tượng đồ họa trong Matlab ta có thể nhúng các công thức toán với mã Latex. Đoạn công thức phải đặt trong dấu $công thức Latex$ và dùng lệnh set(h,'Interpreter','latex') để thiết lập công thức Latex cho đối tượng text h.

                        Ví dụ: Giả sử ta đã có một đối tượng Workspace có tên là omega và dùng các lệnh sau để vẽ đồ thị

                        <br> plot(omega.time,omega.signals.values(:,1),'b-');<br> grid on;<br> title('Rotor angular speed');<br> xlabel('Time');<br> ylabel('rad/s');<br> h = legend('$\frac{J}{p}\frac{d\omega}{dt} = T_e-T_L$',4);<br> set(h,'Interpreter','latex') <br>

                        Kết quả là


                        Anh thevane trong dieukhien.net đã nói đến điều này và nó có ở trong Help của Matlab. Chi tiết tại địa chỉ sau:
                        http://www.dieukhien.net/vn/discuss.php?thid=111


                        Thuộc tính của nó tại địa chỉ:
                        http://www.dieukhien.net/vn/index.ph...d=217&arid=558

                        Các bạn hãy thực hành theo site này nhé và giới thiệu cùng mọi người.
                        Chúc các bạn thành công.
                        Technical sale at WT Microelectronics S'pore
                        Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                        Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                        Comment


                        • #57
                          Latex

                          nếu muốn tìm hiểu về việc viết Latex trong Matlab thì trong Matlab Help
                          bạn có thể search Text Properties

                          Hình như không thể viết Latex Trên sơ đồ Simulink thf phải

                          Comment


                          • #58
                            &quot;Cho mình xin it tài liệu được ko?&quot;

                            Mình đang làm thực tập với MATLAB để lập trình các bài toán tối ưu, mình chưa sử dụng học MATLAB bây giờ mới bắt đầu. Mình đã đọc qua một số lệnh trong MATLAB. Nhưng không có nhiều về thiết kế giao diện.
                            Pác nó có bài nào về giao diện rùi thì cho em xin dc ko để em tham khảo?
                            Nếu có thì gửi qua mail cho em sau: thuylt.ictu@gmail.com.
                            Em dang cần gấp!!!!!!!!!!
                            Mong các Pác giúp đỡ!!!!!!
                            Cảm ơn các Pác trước nhé!

                            Comment


                            • #59
                              Điều khiển qua cổng LPT

                              Mình sử dụng Matlap để xuất tín hiệu qua cổng LPT, nhưng tần số rất thấp vì dùng hàm Pause(0.01). Bạn có cách nào khác để có thể xuất tín hiệu qua cổng LPT với tần số cao không? Cám cơn nhiều!

                              Comment


                              • #60
                                Chào bạn.

                                Trong Matlab mình chưa làm giao tiếp với cổng LPT bạn ạ. Nếu được bạn có thể cho mình xem Project của bạn được không? Mình cùng trao đổi nhé.

                                Theo mình nghĩ nếu muốn truyền tốc độ cao mình có thể dùng các ngôn ngữ khác như C, C++, VC++ và dùng thư viện inoutport32.dll để giao tiếp rất đơn giản bạn ạ.

                                Chúc bạn thành công.
                                Technical sale at WT Microelectronics S'pore
                                Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                                Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                                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