Tổng quan về hàm Callback trong lập trình GUI

April 17, 2008

Sau khi các bạn tạo cái giao diện đã xong thì đến phần lập trình rất quan trọng, chính là lập trình các hành vi của các điều khiển để đáp ứng lại các sự kiện như nhấn phím, kéo thanh trượt, khi chọn menu, … đó chính là các hàm Callback (giống như các hàm sự kiện trong Visual Basic).

Thế nào là hàm Callback ?

Callback là một hàm mà các bạn viết miêu tả hành vi của một thành phần GUI xác định hoặc là của chính GUI figure, điều khiển các hành vi của chúng bằng cách thực hiện một số hành động được viết trong hàm, để đáp ứng lại một sự kiện của chính thành phần đó. Cách lập trình này thường gọi là : Lập trình lái sự kiện (event driven programming).

Ví dụ, khi bạn nhấn một Button thì vẽ đồ thị đúng không ?? Vậy thì khi nhấn phím thì hiển nhiên đã gọi hàm Callback nhấn phím của Button đó, và trong hàm Callback này có lệnh vẽ đồ thị rồi.

Các loại hàm Callback ?

Mỗi thành phần có nhiều hàm Callback khác nhau, các bạn xem thêm ở Properties nhé. Sau đây liệt kê các loại hàm Callback và các điều khiển có thể có hàm này.

Callback propertySự kiện xảy raThành phần có hàm này
ButtonDownFcnThực hiện khi người dùng nhấn chuột lên hoặc trong 5 pixels của component hoặc figure. Nếu là component thì thuộc tính Enable phải on ( tất nhiên rùi ).

Axes,figure,button
group,panel,user
interfacecontrols

Callback

Hành động của các component, ví dụ như thực thi khi người dùng click lên Push Button hoặc chọn một thành phần menu.

Contextmenu,
menu,userinterface
controls

CloseRequestFcnThực thi trước khi figure đóng.Figure
CreateFcn

Tạo các thành phần.Nó được dùng để khởi tạo các thành phần khi nó được tạo ra. Nó thực thi sau khi thành phần hoặc figure được tạo, nhưng trước khi hiển thị lên trên giao diện người dùng.

Axes,figure,button
group,contextmenu,
menu,panel,user
interfacecontrols

DeleteFcn

Xóa thành phần. Nó có thể được dùng để thực hiện hành động xóa bỏ trước khi component hoặc figure bị hủy bỏ.

Axes,figure,button
group,contextmenu,
menu,panel,user
interfacecontrols

KeyPressFcn

Thực thi khi người dùng nhấn một phím trong keyboard và component hoặc figure của hàm callback đó đang được focus.

Figure,userinterface
controls

KeyReleaseFcn

Thực thi khi người dùng nhả một phím đang bấm và figure vẫn đang được focus.

Figure
ResizeFcn

Thực thi khi người dùng thay đổi kích thước của panel, button group, hoặc figure với điều kiện thuộc tính Resize của figure = on.

Buttongroup,figure,
panel

SelectiononChangeFcn

Thực thi khi người dùng lựa chọn một nút Radio Button khác hoặc toggle button khác trong thành phần Button Group.

Buttongroup
WindowButtonDownFcn

Thực thi khi bạn nhấn chuột (trái hoặc phải) trong khi con trỏ vẫn nằm trong vùng cửa sổ figure.

Figure
WindowButtonMotionFcn

Thực thi khi bạn di chuyển con trỏ trong vùng cửa sổ figure.

Figure
WindowButtonUpFcn

Ban đầu bạn nhấn chuột (trái, hoặc phải) thì khi nhả phím đó ra thì hàm này sẽ được gọi.

Figure
WindowScrollWheelFcn

Thực thi khi nút cuộn của chuột cuộn trong khi figure vẫn trong tầm focus.

Figure

Các bài viết liên quan:

  1. Cách trao đổi dữ liệu hiệu quả giữa các hàm Callback của GUI Chào các bạn. Một vấn đề mà các bạn hay gặp phải khi thực hiện lập trình giao diện GUI là trao đổi dữ liệu giữa các hàm Callback hay của chính hàm Callback đó. Ví dụ: bạn làm sao biết hàm Callback này chạy được bao nhiêu lần ?? Nếu bạn muốn thực hiện [...]...
  2. Lập trình giao diện GUI trong Matlab (Phần 1) Mình viết bài này để tổng hợp lại các hướng dẫn về thiết kế giao diện GUI trong Matlab để các bạn dễ dàng thực hiện. Phần mềm: Matlab R2007a Bài đầu tiên mình sẽ giới thiệu các bạn giao diện GUI. 1. Mở phần mềm Matlab, gõ lệnh sau vào cửa sổ Command >> [...]...
  3. Các tính chất của các điều khiển trong GUIDE Matlab Chào các bạn. Mình xin gửi các bạn tài liệu Matlab 7 – Creating Graphical User Interfaces, là tài liệu dạng .pdf của tài liệu trong Help của Matlab. Các bạn nào có thể tự đọc hiểu được English thì tài liệu này là quá đầy đủ rồi. Các bài viết của mình dựa một [...]...
  4. Trình quản lý tài liệu hiệu quả JabRef – Reference manager trong Ubuntu Chào các bạn. Được anh Hiệp giới thiệu về phần mềm quản lý tài liệu này khá hay nên mình giới thiệu cho các bạn. Trang chủ: http://jabref.sourceforge.net/index.php Mình mới dùng thì thấy thích thú là nó cho phép ta ghi đầy đủ chi tiết về các book, article, conference, … và có thể link [...]...
  5. Lập trình giao tiếp RS232 qua Matlab Chào các bạn. Mình xin tổng hợp lại một số bài viết của mình về lập trình giao tiếp RS232 trên PC bằng phần mềm Matlab. I. Đối tượng Serial Object Việc giao tiếp này cũng rất dễ dàng thực hiện, không có gì là quá cao siêu cả. Mình đã giao tiếp thành công [...]...
  6. Sự thật về quan hệ Việt Nam và Trung Quốc trong 30 năm qua PHẦN THỨ NHẤT VIỆT NAM TRONG CHIẾN LƯỢC CỦA TRUNG QUỐC Những hành động thù địch công khai của những người lãnh đạo Trung Quốc đối với Việt Nam, mà đỉnh cao là cuộc chiến tranh xâm lược của họ ngày 17 tháng 2 năm 1979, đã làm cho dư luận thế giới ngạc nhiên [...]...

{ 67 comments… read them below or add one }

1 phap July 3, 2008 at 7:26 pm

chào anh! anh chỉ cho em cách xử lý ảnh trong matlab được không ạ! thank

Reply

2 Bui Quang Thanh July 6, 2008 at 6:49 pm

http://www.4shared.com/file/54152349/5b16ffa5/xu_ly_anh-_bui_quang_thanh.html

Đây là bài mình làm về xử lý ảnh với load ảnh và xử lý ảnh đó với pop-up Menu. Hy vọng sẽ giúp được bạn nhiều. Tuy nhiên nó vẫn còn nhiều hạn chế sau. Mong anh Bắc và các bạn sau khi xem xong sẽ tìm ra được lỗi để bài này được tốt hơn.

ưu điểm:
– Sau khi nhấn button thì nó load được 1 ảnh vào axes1
– sau khi chọn item trong pop-up-menu thì nó sẽ xử lí ảnh đó.

hạn chế: – Nó chỉ load được các bứt ảnh trong thư mục Work của Matlab.
– Mình chưa thể sử dụng bức ảnh đã load vào axes1 để xử lý trong pop-up Menu.
– Rõ ràng là mình cho load ảnh vào axes1 còn xử lí ảnh đó thì mình cho hiện lên ases2 nhưng nó nhảy tán loạn lên cả 2 axes

Mục tiêu hướng tới của bài này là:
– Có thể load ảnh ở bất kỳ đâu trong máy tính.
– Dùng bứt ảnh ban đầu đã load trong axes1 để xử lý tiếp trong các item pop-up Menu.
– Khắc phục được hạn chế thứ 3 trên( cho load ảnh vào axes1 và giữ cố định bức ảnh này, sau khi xử lý bứt ảnh đó thì cho hiện ảnh đã được xử lý lên axes2 )

Mình rất mong nhận được sự trao đổi và góp ý từ các bạn để đạt được mục tiêu trên.
Chúc các bạn thành công.

Reply

3 nguyễn xuân trung April 20, 2009 at 7:47 pm

anh QUANG THANH à. em đang làm 1 đồ án môn học về xử lí ảnh bằng wavelet trong matlab. hiện nay em chưa co tài liệu gì cả.a cótheerr cho em một ít tài liệu được không anh. hay anh có bài viết nào không anh. cái link anh cho ở đầu em mở không được. hiện nay em đang rất cần. anh giúp em với nhé.
em cảm ơn anh. chúc anh thành công.

Reply

4 ngohaibac April 20, 2009 at 8:24 pm

Chào em.

Anh Quang Thanh nào thế em ? Tài liệu nào thì em search trên Google là ra thôi mà em. Em search với từ khóa: Image Processing using Wavelet in Matlab.

Chúc em thành công.

Reply

5 Bui Quang Thanh July 8, 2008 at 9:09 am

Chào anh Bắc.
Anh có thể giải thích giúp cho em cấu trúc dòng lệnh này với: lab_he(:,:,2:3). Em đọc tìm trong help mà chưa thấy, em nghi ngờ nó là mãng, đọc phần mãng thì thấy không có trường hợp đó. Anh giải thích giùm ý nghĩa của dấu “:”, dấu “,”, số “2,3″.Em đọc code thấy nhiều trường hợp tương tự. Em đang rất rất cần. Hay anh chỉ chỗ nào trong help có giải thích về phần này cũng được em sẽ mò và đọc.
Chúc anh thành công.

Reply

6 Bui Quang Thanh July 9, 2008 at 1:43 am

Cái này thì em đã biết:
A= [1 2 3 4;4 5 6 7;8 9 10 11;12 13 14 15]
kết quả: A= 1 2 3 4
5 6 7 8
8 9 10 11
12 13 14 15

ví dụ: D(:,j): Chính là biểu diễn cột thứ j
C(i:k,:): Biểu diễn từ dòng i–>k

Cái của anh nói thì em đã biết A(:,3): là biểu diễn cột thứ 3.
Còn trường hợp em hỏi là B(:,:,2:3)nó khác mấy cái trên là có tới 3 dấu phẩy, còn trường hợp 2 đấu phẩy là thể hiện hàng và cột.Anh xem lại thử giùm em.
Chúc anh thành công.

Reply

7 Bui Quang Thanh July 9, 2008 at 7:33 pm

Chào anh.
Cảm ơn anh, em sẽ xem kỹ lại, à sẵng tiện cho em hỏi thêm, anh biết file có đuôi .mat trong matlab để làm gì không ạ, và cách để mở nó ra xem thì như thế nào.

Chúc anh thành công.

Reply

8 bapngo July 11, 2008 at 8:55 am

Thế nào là hàm Callback ?

Callback là một hàm mà các bạn viết miêu tả hành vi của một thành phần GUI xác định hoặc là của chính GUI figure, điều khiển các hành vi của chúng bằng cách thực hiện một số hành động được viết trong hàm, để đáp ứng lại một sự kiện của chính thành phần đó. Cách lập trình này thường gọi là : Lập trình lái sự kiện (event driven programming).
<— bác dịch từ tiếng anh ra à?? giống cái máy dịch.

Reply

9 Bui Quang Thanh July 16, 2008 at 4:45 am

chào anh Bắc

Em đang biên dịch chuơng trình Matlab ra file EXE, bước đầu tiên em đã biên dịch thành công, sau đó em gõ toploytool trong command window nó báo lỗi không có lệnh này.

Reply

10 Bui Quang Thanh July 16, 2008 at 4:54 am

Hi Anh.
trong bài hướng dẫn anh có nói là từ menu file gõ deploytool. có phải là trong command window ta gõ vào lện này không ạ, vì em đã gõ trong command window nhưng không được,nó báo lỗi không có cái này. anh chỉ giúp em, em đang cần

Reply

11 Ngô Hải Bắc July 16, 2008 at 8:53 am

Chào em.

Đúng là gõ lệnh deploytool trong command window em ạ.

Nếu Matlab của em không có thì em mua bản Matlab mới nhất sẽ có. Hoặc copy ở nhà bạn bè thư mục sau:

C:\Program Files\MATLAB\R2007a\toolbox\compiler\deploy

Rồi copy vào trong thư mục Toolbox: $Matlab\toolbox\compiler

Rồi add path của thư mục này vào. (Vào menu File -> Add path).

Chúc em thành công.

Reply

12 Bui Quang Thanh July 16, 2008 at 6:26 pm

chào Anh.
em đang cài matlab 7.0, em đang làm thực tập nên mới mua đĩa này tại Nhat Trang, ở đây họ bán virsion này mới nhất, nên em ko biết phải tìm ở đâu nữa, nếu anh có anh có thể share cho em được không ạ. Em cần để đóng gói lại đem cho Thầy xem qua cho tiện. Cảm ơn anh nhiều

Reply

13 Bui Quang Thanh July 17, 2008 at 8:55 am

Chào anh Bắc.

Để vài hôm nữa làm hoàn chỉnh em sẽ gủi nhờ anh đóng gói giúp. À sẵng tiện cho em hỏi hiện nay virsion mới nhất là bao nhiêu vậy ạ, em cài 7.0 rùi mà sao hẻm có vậy trời.

Reply

14 Bui Quang Thanh July 17, 2008 at 9:13 am

anh hiện đang dùng phiên bản bao nhiêu mà có cái biên dịch ra file EXE vậy. Từ phiên bản bao nhiêu thì có cái này vậy ạ

Reply

15 Bui Quang Thanh July 17, 2008 at 7:56 pm

chào anh.
Trong quá trình cài Matlab có bắt buột phải nhập Get my PLP. Vì em cài đã bỏ qua cái này nên ko biết có thiếu không chứ em cài bản 7.0 (R14) mà.Nếu có nhập vào PLP thì phải làm sao vậy anh Bắc.

Reply

16 Bui Quang Thanh July 18, 2008 at 10:17 am

Chào anh.
Vậy dùng lệnh mcc thì chỉ biên dịch được file.m thôi hả anh, chứ ko biên dịch được file.fig?. Hôm nào anh rãnh viết bài chỉ em cách biên dịch bằng lệnh mcc nhé. Nhớ nhanh nhanh chút nha anh.Mai đi ra tiệm hỏi thử có đĩa R2007 or 2008 thử có ko

Chúc anh thành công. Sau đợt thực tập này phải viết bài để đóng góp, chia sẽ kinh nghiệm cho bạn nào cần về xử lí ảnh quá hic hic. Chứ như em đây lúc đầu hỏi đủ thứ nơi, may mà còn có chỗ để hỏi. :P

Reply

17 pháp July 18, 2008 at 6:23 pm

chào các bạn!hiện minh dang làm đề tài xử lý ảnh mình tạo button load ảnh mình muốn khi nhấn button này thì nó hiện ra hộp thoại để lấy file ảnh từ 1 thư mục nhưng mình không lấy được file ảnh trong thư mục đó để đưa ra axec1 các bạn chỉ cho mình với thank!

Reply

18 Bui Quang Thanh July 18, 2008 at 9:07 pm

chào bạn
bước 1: Để hiện hộp dialoge chọn file ảnh bạn dùng lệnh uigetfile cụ thể filename = uigetfile(*.*);
bước 2: đọc bứt ảnh đó và lưu vào biến ảnh : anh = imread(filename);
bước 3: xuất bứt ảnh ra dùng lệnh imshow: imshow(ảnh);

Reply

19 Bui Quang Thanh July 18, 2008 at 9:10 pm

Chào các bạn.
Có bạn nào biết cách hiện 1 ảnh lên axes mà đúng bằng kích thước của axes mà ta đã thiết kế không ạ. Sao mình hiện lênh nó không đúng bằng với kích thướt của cái axes mà đã thiết kế. Thank u

Reply

20 Bui Quang Thanh July 19, 2008 at 1:32 am

chao bạn.
Ý bạn là sao mình chưa hiểu lắm. Theo mình nghĩ cái này đâu nhất thiết phải đi xác định kích thướt của ảnh đâu. Mà mình nghĩ là đi xác định kich thướt của axes đó.Nhưng mình làm chưa được. Không biết bạn đã từng thực hiện chưa, nếu làm rùi thì cho mình vài dòng lệnh là mình làm ok.

Reply

21 Bui Quang Thanh July 19, 2008 at 6:59 am

Chào anh Bắc.
Đúng là dùng uicontrol để điều khiển các thuộc tính của axes. Nhưng nó được sử dụng nhiều trong lập trình file.m,cái này thì lập trình khơi khó, nên em chỉ lập trình trong file.fig. Cái set thuộc tính width and height cho axes nghe có vẻ hợp lí, nhưng viết lệnh cụ thể thì sao anh có biết ko, em đang làm nhưng chưa ra.

Reply

22 Bui Quang Thanh July 19, 2008 at 6:22 pm

Hi anh
Em đã thử rùi,và đã ok yêu cầu của em,cảm ơn anh nhiều vì đã nhiệt tình giúp đỡ em.
À anh Bắc ơi, chắc anh đã có nhiều kinh nghiệm về lập trình rùi, anh có thể chỉ em cách dùng hàm với: cách khai bào 1 hàm tự tạo và cách để sử dụng hàm đó trong chương trình.
Cảm ơn anh nhiều.

Reply

23 Bui Quang Thanh July 20, 2008 at 6:51 pm

chao anh. Cảm ơn anh, em sẽ tìm hiểu.

Reply

24 Bui Quang Thanh July 20, 2008 at 8:14 pm

chào anh.
Lần trước anh đã từng biên dịch matlab ra file.Exe bằng lệnh mcc rùi phải ko ạ. Em đã biên dịch ra đựoc file exe rùi, nhưng sao khi chạy chỉ hiện mà hình dos. Em dùng lệnh: mcc -m filenam.m

Reply

25 Bui Quang Thanh July 20, 2008 at 9:02 pm

em chạy được cái file biên dịch rùi. Nhưng chỉ chạy được cái file biên dịch đó khi nó nằm trong thư mục Work thôi. Như vậy là sao vậy anh, anh có biết ko

Reply

26 Bui Quang Thanh July 20, 2008 at 9:15 pm

chào anh. Em đã biên chạy được ok hết rùi. Vậy là khi đem sang máy khác em cần phải copy cái fiel MCRIntaller.exe và cài đặt cái này vào máy đó nữa thì mới chạy được phải không anh.

Reply

27 Bui Quang Thanh July 20, 2008 at 11:19 pm

Chào anh.
MCRInstaller.exe là để biên dịch thui mà anh, còn đóng gói thì phải dùng MCRInstaller.msi chứ, anh nói em chưa hiểu lắm. Anh có thể nói cụ thể hơn không ạ.

chúc anh thành công.

Reply

28 Bui Quang Thanh July 21, 2008 at 7:04 am

Chào anh.
em đã đem chạy trên máy khác rùi, ok rùi nhưng em cũng không cần phải copy cái C:\Program Files\MATLAB\R2007a\toolbox\compiler\deploy\win32 này. Mà em chỉ cần copy các file biên dịch + MCRIntaller.exe và sang máy khác cài là chạy ok.

Cảm ơn anh trong thời gian qua đã giúp đỡ em.
Chào tạm biệt. Chúc anh hạnh phúc trong cuộc sống.

Reply

29 Bui Quang Thanh July 26, 2008 at 9:13 am

Chào anh Bắc, mấy hôm nay mạng nhà em bị hỏng, đang làm thực tập nên khổ với cái mạng hỏng.
À anh Bắc ơi cái đồ án bằng file pps mà anh đã làm đó, có cách đơn giản nào anh có thể share cho em cách làm không ạ, như tài liệu, hay là link…, hùi trước anh đọc tài liệu gì để làm cái này vậy. Nói thật em rất thích cách làm này, nên nhất định trong đợt thực tập chuyên ngành này em sẽ phải làm cho bằng được cái này vì trông nó rất pro. :lol: :lol: :lol:

Reply

30 admin July 26, 2008 at 5:44 pm

Chào em.

Cái này đơn giản mà em. Quan trọng là ý tưởng, sau đó đơn giản ý tưởng, rồi nhờ các công cụ có sẵn để thực hiện ý tưởng đó.

Để anh share cho em cái mã nguồn anh làm trên PowerPoint 2007 nha. Đây nè

Chúc em thành công.

Reply

31 Bui Quang Thanh July 27, 2008 at 1:35 am

Cảm ơn anh bắc nhiều, à phải dùng pp2007 mới mở đựoc phải không anh, em mở bằng pp2003 ko được. Vì pp2003 không có định đạng file.ppsx.À cho em hỏi thêm trên pp2003 mình có thể làm theo dạng này được không ạ. Cảm ơn anh nhiều

Reply

32 Bui Quang Thanh July 27, 2008 at 5:39 am

chào anh. Dạ có anh share cho em với ạ, mà cái mrgreen là cái gì vậy anh. Anh có tài liệu liên quan hay là công cụ gì thì anh cứ share giúp em hết nha, em lúc nào cũng cần. Vì em chưa làm cái này bao giờ. Chào tạm biêt

Reply

33 admin July 29, 2008 at 8:03 am

Chào em.

Anh upload lên rồi. Đây nè. Cái này mở được bằng PPT2003 đó.

Mấy hôm anh làm dự án bận quá nên không trả lời em ngay được.

Chúc em thành công.

Reply

34 Bui Quang Thanh July 29, 2008 at 9:51 am

Cảm ơn anh nhiều. Anh Bắc ơi,anh giúp em 2 vấn đề này nha, đơn giản là 2 câu hỏi thôi ạ, không biết anh đã từng làm chưa.
1) em đã biên dịch được và chạy với file EXE rùi, nhưng ko biết trong Matlab có hỗ trợ cách đóng gói không ạ.
2) Có cách nào kết nối matlab với VB or C#. net không ạ

Reply

35 Bui Quang Thanh July 29, 2008 at 7:50 pm

Chào anh, có phải vào Complier builder for Come không ạ, còn nhân CTR+P là sao vậy ạ, vô chỗ nào để nhấn, nói thật em anh nói chung chung quá em hẻm biết làm, anh có thời gian thì nói step by step cho em nha. Cảm ơn anh nhiều lắm.

Làm sao tạo được thư viện DLL vậy anh Bắc.
Chào anh. chúc anh hạnh phúc

Reply

36 Bui Quang Thanh July 30, 2008 at 7:04 am

Cảm ơn anh nhiều, em sẽ tìm hiểu ạ. Chào tạm biệt anh.

Reply

37 bui quang thanh August 9, 2008 at 8:21 am

Chao anh Bắc. Em đã cài bản 2007, đúng là bản này mới có deploytool.Mấy tuần nay lo hoàn thiện chương trình và viết báo cáo đem cho thầy xem, nên không vào đây. Bây giờ lại có chuyện nhờ anh Bắc giúp rùi. Anh có thể chỉ sơ sơ cho em cách tạo mấy cái button ở trong powerpoint mà anh làm trong cái đồ án của anh. Cảm ơn anh nhiều

Reply

38 bui quang thanh August 20, 2008 at 1:14 am

chào anh Bắc. Không biết anh đang bận hay sao, mà không thấy anh hồi âm, anh giúp em một cái này nữa thôi ạ. Em chân thành cảm ơn anh trước nha.

Anh cho em hỏi trong cái báo cáo bằng pp mà anh gửi cho em đó, có cái mục lục, phần khái quát, em thấy nó là một picture cái đó làm sao vậy anh bắt, anh dùng công cụ gì để làm cái đó vậy ạ, cái hình đó có chèn chữ vô đấy ạ.

Mong anh hồi âm sớm giúp em. Một lần nữa cảm ơn anh nhiều

Reply

39 bui quang thanh August 21, 2008 at 10:42 am

à thì ra anh dùng pp 2007

Reply

40 NGUYỄN MINH NHẬT December 11, 2009 at 12:45 am

Tôi đang làm đồ án về xử lý ảnh dùng mạng neuron nhận dạng khuôn mặt người! bây giờ đến việc làm sao lấy ma trận tất cả các điểm ảnh để đưa đầu vào! không biết dùng hàm gì? xin các anh chỉ giúp dùm ! xin cảm ơn!

Reply

41 ngohaibac December 11, 2009 at 2:37 pm

Bạn dùng hàm imread là được mà.

Chúc bạn thành công.

Reply

42 NGUYỄN MINH NHẬT December 11, 2009 at 12:48 am

sao mà lấy ra toàn bộ các giá trị từng pixel trong 1 ảnh được vậy? dùng hàm gì bây giờ? xin chỉ dùm

Reply

43 NGUYỄN MINH NHẬT December 11, 2009 at 12:49 am

Em đả đọc kĩ Help về toolbox Digital Image Processing Toolbox nhưng ko thấy nó nói gì hết!!

Reply

44 admin July 4, 2008 at 11:39 pm

Chào em.

Em đọc kĩ Help về toolbox Digital Image Processing Toolbox nhé em. Nó có hướng dẫn em đầy đủ đó.

Chúc em thành công.

Reply

45 ngohaibac July 6, 2008 at 8:37 pm

Chào bạn.

Cảm ơn sự tham gia nhiệt tình của bạn. Hi vọng chúng ta có thể thảo luận nhiều hơn.

Chúc bạn thành công.

Reply

46 ngohaibac July 8, 2008 at 6:38 pm

Chào em.

Sao lại phần mảng không có hả em :D . Phần matrix thì có kí hiệu : mà em. Anh ví dụ nhé.

A = [1 2 4; 4 6 7; 5 7 8];
A(1,:)

Em thử chạy đoạn code trên xem thế nào. Như vậy : chính lại đại diện thay cho vector 1:3 đó (trong trường hợp này). Từ đó em có thể suy ra các trường hợp khác như: A(:,3) là để làm gì, …

Còn dấu “,” thì có tác dụng ngăn cách giữa các phần tử trong vector hoặc trong cùng hàng của matrix.

Chúc em thành công.

Reply

47 ngohaibac July 9, 2008 at 2:19 am

Chào em.

Anh nghĩ cái này cũng tương tự mà em. Nó sẽ trả về một ma trận 3 chiều mà em: m x n x 2.

Chúc em thành công.

Reply

48 ngohaibac July 9, 2008 at 8:46 pm

Chào em.

File đó dùng để lưu dữ liệu các biến đó em.Em dùng các lệnh load, save để làm việc với file này.

Em gõ: help load để xem nhé.

Chúc em thành công.

Reply

49 admin July 11, 2008 at 4:02 pm

Chào bạn.

Rất cảm ơn sự góp ý của bạn. Có thể là tiếng Anh của mình chưa tốt hoặc bản dịch chưa tốt. Mong sự góp ý và chia sẻ kinh nghiệm của bạn.

Có thể mình hơi vội vàng khi chia sẻ với các bạn chăng. Dù sao mình nghĩ nó tốt cho những bạn English chưa tốt lắm, không đọc hiểu được English. Còn với mình, thực ra chẳng bao giờ cần phải dịch ra làm gì, ngồi đọc đống files English chính gốc thích thú hơn nhiều.

Mong sự đóng góp và chia sẻ của bạn.

Chúc bạn thành công.

Reply

50 admin July 17, 2008 at 6:46 am

Chào em.

Cái toolbox đó hơi lớn em ạ, hơn 200MB thì phải. Khi em đưa ứng dụng cho thầy thì vẫn phải copy thêm cái MCRInstaller.exe nữa (hơn 100MB) nữa cơ mà. Nên tạm thời em cứ đưa cho thầy source đã nhé.

Nếu k có gì bí mật, thì gửi source cho anh, anh dịch ra .exe cho nhé.

Chúc em thành công.

Reply

51 admin July 17, 2008 at 8:48 pm

Anh hiện tại đang dùng bản Matlab R2007a. Hình như Deploytool có từ phiên bản này thì phải. Ngày xưa anh dùng bản 7.0 thì không thấy có deploytool mà phải dùng lệnh để dịch như mcc,… chứ không có giao diện.

Bây giờ bản mới nhất là R2008a rồi em ạ. Bản 7.0 cũ quá rồi :mrgreen: . Em nên nhờ bạn nào ở HN hoặc TP HCM mua hộ cho cái đĩa nhé.

Chức năng dịch ra file .exe nằm trong Toolbox Matlab Compiler, em xem trong Help nếu có toolbox này thì Matlab của em có thể dịch được. Em đọc lại hướng dẫn của nó để dịch ra file .exe bằng lệnh mcc- xem sao nhé. Rảnh anh sẽ post hướng dẫn bằng dùng code nhé.

Chúc em thành công.

Reply

52 admin July 17, 2008 at 9:25 pm

Chào em.

Bản 7.0 này có crack em ạ. Nên em không cần phải nhập PLP key đâu.

Chúc em thành công.

Reply

53 admin July 18, 2008 at 3:25 pm

Chào em.

Lệnh mcc với lại cái deploytool là giống nhau thôi, biên dịch được các file .fig và .m (theo anh biết) do đó, các chức năng mà deploytool thực hiện được em hoàn toàn có thể tự làm được bằng code với lệnh mcc.

À, mới nghĩ ra ý tưởng hay. Nếu không muốn dùng thằng deploytool thì anh em nào thích thì phát triển luôn cái tool dịch ra .exe cho chúng ta nhỉ :D . Nó sẽ viết bằng GUI hoặc tốt nhất là code file .m là được.

Anh làm xong cái dự án này, rảnh sẽ bắt tay vào code cho các bạn cái này xem :mrgreen: .

Chúc mọi người thành công.

Reply

54 Bui Quang Thanh July 18, 2008 at 8:09 pm

hay đấy ý tưởng này hay.Cố gắng làm sớm sớm nha anh Bắc

Reply

55 admin July 18, 2008 at 11:12 pm

Chào bạn.

Bạn dùng hàm uigetfile. Tham khảo
GUI Matlab: Hộp thoại mở file như Open của Windows

Chúc bạn thành công.

Reply

56 admin July 18, 2008 at 11:14 pm

Chào bạn.

Gợi ý: Tìm cách để xác định được kích thước của ảnh theo đơn vị nào đó như pixels,…

Set thuộc tính width, height bằng giá trị đó (nhớ chuyển units đúng theo đơn vị như trên).

Chúc bạn thành công.

Reply

57 admin July 19, 2008 at 3:24 am

Chào bạn.

Kích thước của Axes là một uicontrol trong GUI phải không hả bạn ?

Reply

58 admin July 19, 2008 at 7:34 am

Chào bạn.

Cái này bạn chỉ cần set thuộc tính Position của axes thôi.

Thuộc tính Position là vector gồm 4 thành phần:

[x y width heigh].

Khi cần thiết lập thuộc tính này ta làm như sau:

position_val = [x_val y_val width_val heigh_val];
set(handles.axes1,’Position’,position_val);

Xem trong cửa sổ properties của axes hay bất kì một điều khiển nào khác đều có thuộc tính này.

Chúc bạn thành công.

Reply

59 admin July 20, 2008 at 7:15 am

Chào em.

Rất vui đã giúp được em.

Còn vấn đề tạo hàm thì đơn giản mà. Em gõ help hoặc vào help của nó search với keyword: function nó sẽ có ví dụ cho em thực hiện.

Hoặc gõ trong command: help function.

Chúc em thành công.

Reply

60 admin July 20, 2008 at 10:32 pm

Chào em.

Em đóng gói file đó vào với file MCRInstaller.exe vào trong một thư mục.

Chạy file đóng gói đó, nó sẽ cài MCRInstaller.exe đầu tiên, lần sau thì đừng chọn cài đặt nữa.

Thế là chạy ngon lành ngay.

Chúc em thành công.

Reply

61 admin July 21, 2008 at 6:50 am

Không phải MCRInstaller.exe để cài đặt vào tạo môi trường chạy các file .exe của em. Hoàn toàn không có file .msi đâu.

Như thế này, em dịch ra file .exe (CTR+B) rồi đóng gói lại (CTR+P).

Copy file MCRInstaller.exe ở trong thư mục C:\Program Files\MATLAB\R2007a\toolbox\compiler\deploy\win32 vào cùng thư mục với file .exe đó.

Tắt Matlab đi, em có thể chạy được file .exe (k phải file pkg). Nhưng mang sang máy khác sẽ báo lỗi chưa cài MCRInstaller.exe. Vậy thì ở máy khác phải chạy file pkg, nó sẽ tự cài đặt MCRInstaller.exe. Thế là đợi tí là chạy được ứng dụng.

Chúc em thành công.

Reply

62 admin July 21, 2008 at 9:25 am

Oái.

Anh bảo MCRInstaller.exe ở trong thư mục đó mà em. Chứ có bảo em copy cả thư mục đó đâu :mrgreen: . Không hiểu ý anh rồi.

Chúc em thành công.

Reply

63 admin July 27, 2008 at 3:04 am

Chào em.

PP2003 làm được theo cái này chứ. Chỉ đơn giản là mấy cái nút thôi mà :mrgreen: . Có cần file để mở bằng PP2003 k? anh chuyển cho.

Chúc em thành công.

Reply

64 admin July 29, 2008 at 4:41 pm

Chào em.

1. Trong Matlab có đóng gói. Sau khi em build, em chọn Package (Ctr + P) thì chương trình sẽ tự đóng gói với tên là: **_pkg.exe. Em copy file này và file MCRInstaller.exe đi cùng vào các máy khác là chạy ngon lành.

2. Kết nối giữa Matlab với VB, C#.Net tất nhiên là được rồi. Có rất nhiều ứng dụng người ta đã nhúng được vào để dùng sức mạnh tính toán của thư viện Matlab. Em có thể thêm vào bằng cách tạo ra thư viện .dll hoặc mã nguồn .c bằng cách dùng deploytool đó.

Chúc em thành công.

Reply

65 admin July 30, 2008 at 1:09 am

Cái đó dùng với Deploytool mà em. Công cụ đó có menu mà em. Hướng dẫn về build bằng Deploytool của anh đầy đủ rồi mà em.

Reply

66 huy November 19, 2008 at 7:44 pm

anh Bắc ơi , anh chỉ chi tiết dùm em cách sử dụng hàm guidata(hobject,handles) nha anh , anh hãy cho em một ví dụ cụ thể đi anh , em đọc cách trao đổi dữ liệu giữa 2 form trong gui ma chưa hiểu lắm . em cám ơn anh trước nha.
anh gửi dùm em vào địa chỉ mail nha :
buiquochuybt@yahoo.com.vn

Reply

67 ngohaibac November 20, 2008 at 2:17 am

Chào em.

Cái này dùng để lưu lại cấu trúc handles vào trong hObject đó thôi mà.

Chúc em thành công.

Reply

Leave a Comment

CommentLuv Enabled

Previous post:

Next post: