<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog ngohaibac&#187; Matlab</title>
	<atom:link href="http://www.ngohaibac.net/category/programming-my_work/matlab/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ngohaibac.net</link>
	<description>Hãy chia sẻ để được chia sẻ.</description>
	<lastBuildDate>Sat, 15 Oct 2011 14:02:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Matlab - tính toán thời gian chạy ứng dụng, một hàm</title>
		<link>http://www.ngohaibac.net/matlab-tinh-toan-thoi-gian-chay-ung-dung-mot-ham/</link>
		<comments>http://www.ngohaibac.net/matlab-tinh-toan-thoi-gian-chay-ung-dung-mot-ham/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 02:36:05 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/?p=1377</guid>
		<description><![CDATA[Hôm trước có record video về  Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản không thấy các bạn cho ý kiến gì, không hiểu có tốt không nữa, nếu k tốt thì sẽ dừng lại làm việc khác  Hôm nay xin giới thiệu một công cụ đơn giản trong Matlab để [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/video-huong-dan-lap-trinh-gui-tao-1-may-tinh-don-gian/' rel='bookmark' title='Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản'>Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản</a></li>
<li><a href='http://www.ngohaibac.net/pic16f887-dieu-khien-thoi-gian-dong-cat-mot-led-tu-pc-qua-uart/' rel='bookmark' title='PIC16F887 Điều khiển thời gian đóng cắt một led từ PC qua UART'>PIC16F887 Điều khiển thời gian đóng cắt một led từ PC qua UART</a></li>
<li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Hôm trước có record video về  <a title="Permanent link to Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản" rel="bookmark" href="../video-huong-dan-lap-trinh-gui-tao-1-may-tinh-don-gian/">Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản</a> không thấy các bạn cho ý kiến gì, không hiểu có tốt không nữa, nếu k tốt thì sẽ dừng lại làm việc khác  <img src='http://www.ngohaibac.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hôm nay xin giới thiệu một công cụ đơn giản trong Matlab để tính toán thời gian chạy 1 hàm, chương trình trong Matlab. Thực sự cái này không hề biết là có đảm bảo tính thời gian thực hay không, bởi vì nó phụ thuộc vào PC có bao nhiêu CPU, hệ điều hành có Real-time không ? Do đó, thời gian này là chỉ là thời gian tính từ lúc chạy đến kết thúc, chưa chắc là thời gian thực sự cần để chạy chương trình đó, vì trong lúc chạy thì hệ điều hành Windows còn chạy vài ứng dụng vớ vẩn khác. Nếu chạy trong hệ điều hành  Real-Time thì mới biết là đúng dc.</p>
<p>Cách thực hiện rất đơn giản, giống như là bạn có 1 cái đồng hồ điện tử, nếu muốn tính toán thời gian thì ban đầu phải xem giờ là mấy giờ rồi, sau đó nhớ vào, rồi khi xong công việc xem lại rồi trừ đi là ra. Thì thằng  Matalb cũng làm vậy.</p>
<h3>Cách 1: Dùng  TIC/TOC</h3>
<p>Để biết tic, toc là gì, nên tự tìm hiểu qua với Help rất đầy đủ. Cú pháp đơn giản như sau:</p>
<p><tt>tic; any_statements; tElapsed = toc;</tt></p>
<p>Như vậy chương trình hay hàm gì gì đó thì vứt vào trong 2 cái tic, toc là xong. Giá trị trả về sẽ được cho vào 1 biến tElapsed hoặc cái nào tùy ý bạn.</p>
<p>Ví dụ sử dụng:</p>
<pre>for n = 1:100
    A = rand(n,n);
    b = rand(n,1);
    tic
    x = A\b;
    t(n) = toc;
end
plot(t)</pre>
<h3>Cách 2: Dùng etime</h3>
<p>Cái này hơi khác trên kia tẹo, cách thực hiện thực sự là theo nguyên tắc mình nói ở trên đầu. Đầu tiên phải lấy thời gian hiện tại dùng hàm clock, rồi sau đó trừ thời gian đi bằng lệnh etime để tính ra sai lệch. Gõ <strong>help etime </strong>để xem thêm.</p>
<p>Ví dụ đơn giản để sử dụng:</p>
<pre>x = rand(800000, 1);</pre>
<pre>t = clock;  fft(x);  a = etime(clock, t)</pre>
<p>Trong Help của  Matlab khuyên dùng  TIC/TOC nhưng chuyên gia của  Mathworks lại khuyên dùng etime khi dùng với  GUI <a href="http://www.mathworks.com/matlabcentral/newsreader/view_thread/155486" target="_blank">tại đây</a>.</p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=1377&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/video-huong-dan-lap-trinh-gui-tao-1-may-tinh-don-gian/' rel='bookmark' title='Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản'>Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản</a></li>
<li><a href='http://www.ngohaibac.net/pic16f887-dieu-khien-thoi-gian-dong-cat-mot-led-tu-pc-qua-uart/' rel='bookmark' title='PIC16F887 Điều khiển thời gian đóng cắt một led từ PC qua UART'>PIC16F887 Điều khiển thời gian đóng cắt một led từ PC qua UART</a></li>
<li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/matlab-tinh-toan-thoi-gian-chay-ung-dung-mot-ham/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản</title>
		<link>http://www.ngohaibac.net/video-huong-dan-lap-trinh-gui-tao-1-may-tinh-don-gian/</link>
		<comments>http://www.ngohaibac.net/video-huong-dan-lap-trinh-gui-tao-1-may-tinh-don-gian/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 11:07:05 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/?p=1334</guid>
		<description><![CDATA[Chào các bạn. Sau một thời gian dùng Matlab, cũng như trả lời trao đổi của các bạn dùng Matlab để tạo giao diện ứng dụng để báo cáo đề tài, luận văn, ... Vì thế, mình dự định là sẽ tự thu một vài video tutorial hướng dẫn cách lập trình, cũng như một [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/matlab-tinh-toan-thoi-gian-chay-ung-dung-mot-ham/' rel='bookmark' title='Matlab - tính toán thời gian chạy ứng dụng, một hàm'>Matlab - tính toán thời gian chạy ứng dụng, một hàm</a></li>
<li><a href='http://www.ngohaibac.net/huong-dan-lap-trinh-giao-tiep-rs232-tren-pc-bang-visual-c-60/' rel='bookmark' title='Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0'>Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0</a></li>
<li><a href='http://www.ngohaibac.net/dung-phan-mem-moi-chua-han-da-tot/' rel='bookmark' title='Dùng phần mềm mới chưa hẳn đã tốt'>Dùng phần mềm mới chưa hẳn đã tốt</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Chào các bạn.</p>
<p>Sau một thời gian dùng Matlab, cũng như trả lời trao đổi của các bạn dùng Matlab để tạo giao diện ứng dụng để báo cáo đề tài, luận văn, ...</p>
<p>Vì thế, mình dự định là sẽ tự thu một vài video tutorial hướng dẫn cách lập trình, cũng như một vài thuật toán đơn giản và những khó khăn gặp phải khi xây dựng giao diện, khi tương tác các dữ liệu, ...</p>
<p>Các bài hướng dẫn này nằm trong khuân khổ chương trình hỗ trợ học viên của <a href="http://www.hocdelam.org">Hocdelam Group</a></p>
<p><a rel="attachment wp-att-1335" href="http://www.ngohaibac.net/video-huong-dan-lap-trinh-gui-tao-1-may-tinh-don-gian/hb_023/"><img class="aligncenter size-full wp-image-1335" title="hb_023" src="http://www.ngohaibac.net/wp-content/uploads/2009/07/hb_023.png" alt="hb_023" width="621" height="485" /></a></p>
<h3>Download (hơn 100MB)</h3>
<p><a href="http://www.mediafire.com/download.php?kykzftzomzg" target="_blank">http://www.mediafire.com/download.php?kykzftzomzg</a></p>
<p><a href="http://www.mediafire.com/download.php?gjyyyjzzzjl" target="_blank">http://www.mediafire.com/download.php?gjyyyjzzzjl</a></p>
<p>Mã nguồn ứng dụng: <a class="downloadlink" href="http://www.ngohaibac.net/download/Calcualator_V1.zip" title=" downloaded 940 times" >Matlab Calculator V1 (940)</a></p>
<p>File sau khi giải nén sẽ có đuôi là .avi, nên cần phải có AVI codec mới có thể chạy được. Do đó, khuyên các bạn cài đặt 1 trong số các chương trình player sau:</p>
<ul>
<li><a href="http://www.videolan.org/vlc/" target="_blank">VLC Media Player</a></li>
<li><a href="http://www.gomlab.com" target="_blank">GOM Media Player</a></li>
</ul>
<p>Lần đầu xây dựng Tutorial dạng Video nên không thể tránh khỏi thiếu sót. Rất mong sự đóng góp chân thành của các bạn.</p>
<p>Mọi đóng góp xin comment ở dưới bài viết hoặc gửi mail về địa chỉ ngohaibac@hocdelam.org</p>
<p>Chúc các bạn thành công.</p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=1334&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/matlab-tinh-toan-thoi-gian-chay-ung-dung-mot-ham/' rel='bookmark' title='Matlab - tính toán thời gian chạy ứng dụng, một hàm'>Matlab - tính toán thời gian chạy ứng dụng, một hàm</a></li>
<li><a href='http://www.ngohaibac.net/huong-dan-lap-trinh-giao-tiep-rs232-tren-pc-bang-visual-c-60/' rel='bookmark' title='Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0'>Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0</a></li>
<li><a href='http://www.ngohaibac.net/dung-phan-mem-moi-chua-han-da-tot/' rel='bookmark' title='Dùng phần mềm mới chưa hẳn đã tốt'>Dùng phần mềm mới chưa hẳn đã tốt</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/video-huong-dan-lap-trinh-gui-tao-1-may-tinh-don-gian/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Rapid code Interration Using Cells</title>
		<link>http://www.ngohaibac.net/rapid-code-interration-using-cells/</link>
		<comments>http://www.ngohaibac.net/rapid-code-interration-using-cells/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 08:46:33 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Tin tức]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/?p=164</guid>
		<description><![CDATA[Link dưới đây hướng dẫn một thủ thuật khá hay dùng Matlab: Rapid Code Interation Using Cells Related posts:Code::Blocks - chương trình biên soạn C,C++, ... hiệu quả Cách học Matlab hiệu quả Một số cách để download từ rapidshare.com và megaupload.com


Related posts:<ol><li><a href='http://www.ngohaibac.net/codeblocks-chuong-trinh-bien-soan-cc-hieu-qua/' rel='bookmark' title='Code::Blocks - chương trình biên soạn C,C++, ... hiệu quả'>Code::Blocks - chương trình biên soạn C,C++, ... hiệu quả</a></li>
<li><a href='http://www.ngohaibac.net/effective-way-to-learn-matlab-2/' rel='bookmark' title='Cách học Matlab hiệu quả'>Cách học Matlab hiệu quả</a></li>
<li><a href='http://www.ngohaibac.net/mot-so-cach-de-download-tu-rapidsharecom-va-megaupload/' rel='bookmark' title='Một số cách để download từ rapidshare.com và megaupload.com'>Một số cách để download từ rapidshare.com và megaupload.com</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Link dưới đây hướng dẫn một thủ thuật khá hay dùng Matlab:</p>
<p><a href="http://www.mathworks.com/support/2007a/matlab/7.4/demos/RapidCodeIterationUsingCells.swf" rel="shadowbox[sbpost-164];width=640;height=385;">Rapid Code Interation Using Cells</a></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=164&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/codeblocks-chuong-trinh-bien-soan-cc-hieu-qua/' rel='bookmark' title='Code::Blocks - chương trình biên soạn C,C++, ... hiệu quả'>Code::Blocks - chương trình biên soạn C,C++, ... hiệu quả</a></li>
<li><a href='http://www.ngohaibac.net/effective-way-to-learn-matlab-2/' rel='bookmark' title='Cách học Matlab hiệu quả'>Cách học Matlab hiệu quả</a></li>
<li><a href='http://www.ngohaibac.net/mot-so-cach-de-download-tu-rapidsharecom-va-megaupload/' rel='bookmark' title='Một số cách để download từ rapidshare.com và megaupload.com'>Một số cách để download từ rapidshare.com và megaupload.com</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/rapid-code-interration-using-cells/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GUI Matlab: Hộp thoại mở file như Open của Windows</title>
		<link>http://www.ngohaibac.net/gui-matlab-hop-thoai-mo-file-nhu-open-cua-windows/</link>
		<comments>http://www.ngohaibac.net/gui-matlab-hop-thoai-mo-file-nhu-open-cua-windows/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 03:42:54 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/?p=163</guid>
		<description><![CDATA[Chào các bạn. Nay lướt Web đột nhiên thấy hàm cho phép mở hộp thoại Open như trong Windows Tham khảo: http://www.caspur.it/risorse/softappl/doc/matlab_help/techdoc/ref/uigetfile.html Related posts:Tạo file .exe trong Matlab dùng Matlab Compiler Tạo file .exe cho giao diện GUI Matlab Lỗi "error during CMS conversion: could not open scanner ICM profile" với máy scan


Related posts:<ol><li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
<li><a href='http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/' rel='bookmark' title='Tạo file .exe cho giao diện GUI Matlab'>Tạo file .exe cho giao diện GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/loi-error-during-cms-conversion-could-not-open-scanner-icm-profile-voi-may-scan/' rel='bookmark' title='Lỗi &quot;error during CMS conversion: could not open scanner ICM profile&quot; với máy scan'>Lỗi "error during CMS conversion: could not open scanner ICM profile" với máy scan</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Chào các bạn.</p>
<p>Nay lướt Web đột nhiên thấy hàm cho phép mở hộp thoại Open như trong Windows</p>
<p>Tham khảo: <a href="http://www.caspur.it/risorse/softappl/doc/matlab_help/techdoc/ref/uigetfile.html">http://www.caspur.it/risorse/softappl/doc/matlab_help/techdoc/ref/uigetfile.html</a></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=163&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
<li><a href='http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/' rel='bookmark' title='Tạo file .exe cho giao diện GUI Matlab'>Tạo file .exe cho giao diện GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/loi-error-during-cms-conversion-could-not-open-scanner-icm-profile-voi-may-scan/' rel='bookmark' title='Lỗi &quot;error during CMS conversion: could not open scanner ICM profile&quot; với máy scan'>Lỗi "error during CMS conversion: could not open scanner ICM profile" với máy scan</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/gui-matlab-hop-thoai-mo-file-nhu-open-cua-windows/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>C&#225;ch trao đổi dữ liệu hiệu quả giữa các hàm Callback của GUI</title>
		<link>http://www.ngohaibac.net/cach-trao-doi-du-lieu-hieu-qua-giua-cac-ham-callback-cua-gui/</link>
		<comments>http://www.ngohaibac.net/cach-trao-doi-du-lieu-hieu-qua-giua-cac-ham-callback-cua-gui/#comments</comments>
		<pubDate>Fri, 30 May 2008 16:33:55 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/cach-trao-doi-du-lieu-hieu-qua-giua-cac-ham-callback-cua-gui/</guid>
		<description><![CDATA[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 [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/gui-callback-overview/' rel='bookmark' title='Tổng quan về hàm Callback trong lập trình GUI'>Tổng quan về hàm Callback trong lập trình GUI</a></li>
<li><a href='http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/' rel='bookmark' title='Hiển thị Led 7 thanh trên GUI Matlab'>Hiển thị Led 7 thanh trên GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/trinh-quan-ly-tai-lieu-hieu-qua-jabref-trong-ubuntu/' rel='bookmark' title='Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu'>Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Chào các bạn.</p>
<p>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 một điều gì đó khi hàm này chạy đến lần thứ 2 thì làm sao ?? Nếu muốn lấy kết quả của một hàm Callback khác thì làm sao ??</p>
<p>Giải pháp tất nhiên là phải ghi vào một nơi mà có thể truy suất bất kì lúc nào trong các hàm Callback.</p>
<p>Ngày xưa, lúc mới lập trình GUI mình có nghĩ đến dùng cách ghi dữ liệu cùa biến nhớ, data vào một file .mat rồi dùng các lệnh <strong>load, save</strong> để đọc và ghi vào file này. Tuy nhiên, vấn đề vớ vẩn hay gặp là khi bạn ghi liên tục khối dữ liệu lớn thì file này sẽ bị hỏng và báo rằng không đọc, ghi được. Bó tay luôn, hic hic.</p>
<p>Đọc đến cấu trúc handles thấy quả thật đây là giải pháp Pro nhất rồi. Không còn gặp trục trặc khi trao đổi dữ liệu nữa. Chi tiết xin các bạn xem tham khảo [1] rất là đầy đủ.</p>
<p>handles là một cấu trúc mà các trường của nó chính là các handle của các điều khiển trong GUIDE. Chúng ta vẫn dùng cấu trúc này để thiết lập các thuộc tính của các điều khiển trong GUI.</p>
<h6><strong>Thêm các trường vào cấu trúc Handles</strong></h6>
<p><a name="zmw57dd0e12420"></a></p>
<p>Cấu trúc <tt>handles</tt> chính là tham số của tất cả các hàm Callback. Để thêm một trường vào trong cấu trúc <tt>handles</tt> chúng ta làm theo 2 bước sau:</p>
<ol>
<li><a name="f5-999462"></a>Gán một giá trị vào trường mới của <tt>handles</tt>. Ví dụ:
<pre>
<blockquote style="margin-right: 0px" dir="ltr">

handles.number_errors = 0;</blockquote>
</pre>
<p>đã thêm trường number_errors vào cấu trúc handles và khởi tạo với giá trị 0. Chú ý: nên khởi tạo một trường mới của handles trong hàm OpenFcn của GUI để trường này luôn được tạo khi GUI chạy và khi đó tất cả các hàm Callback đều truy nhập được vào trường đã khởi tạo này.</li>
<li><a name="f5-999465"></a>Dùng lệnh sau đây để lưu dữ liệu:
<pre>
<blockquote style="margin-right: 0px" dir="ltr">

guidata(hObject,handles)</blockquote>
</pre>
<p>trong đó hObject là handles của thành phần mà đang gọi hàm callback. hObject là tham số luôn luôn có ở các hàm Callback, được tự động tạo bởi GUIDE.</li>
</ol>
<h6>Cập nhật GUI Data trong M-file tạo bởi GUIDE</h6>
<p><a name="changing_guidata_guide"></a></p>
<p>Khi đã tạo ra một trường mới trong handles thì bây giờ chúng ta truy nhập và cập nhật giá trị của nó như thế nào ??</p>
<p>Ở bên trên chúng ta đã tạo ra một trường với tên là number_errors. Bây giờ chúng ta sẽ gán một giá trị khác cho nó và lưu dữ liệu vào. Tất nhiên phải làm theo như sau:</p>
<ol>
<li><a name="f5-999565"></a>Thay đổi giá trị của trường number_errors thành 10.
<pre>
<blockquote>

handles.number_errors = 10;</blockquote>
</pre>
</li>
<li><a name="f5-998786"></a>Lưu lại cấu trúc handles với lệnh sau:
<pre>
<blockquote style="margin-right: 0px" dir="ltr">

guidata(hObject,handles)</blockquote>
</pre>
<p>trong đó hObject là biến của hàm Callback chính là handle của chính điều khiển gọi hàm Callback đó. Nếu bạn không ghi dữ liệu handles vào GUIDATA thì sẽ bị mất mà ngay. Nó sẽ vẫn lưu giá trị cũ thôi.</li>
</ol>
<h6>Lấy giá trị từ cấu trúc handles</h6>
<p>Tất nhiên để lấy một giá trị từ một trường của handles, chúng ta làm như sau:</p>
<blockquote><p>a = handles.number_errors;</p></blockquote>
<p>Quá đơn giản phải không ke ke.</p>
<p>Xem thêm về GUIDATA tại tham khảo [2].</p>
<p>Các bạn có thể xem thêm về <strong>Application Data</strong>, tức là tạo một cấu trúc tương tự như handles. Cách này mở rộng hơn không nhất thiết phải cho các figure.</p>
<p><span style="color: #0000ff; font-size: small;"><strong>Tham khảo</strong></span></p>
<p>[1] Mathwors Corp, <a href="http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/creating_guis/f5-998352.html&amp;http://www.google.com.vn/search?q=handles+structure++guide+matlab&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:en-US:official&amp;client=firefox-a">Mechanisms for Managing Data</a></p>
<p>[2] Mathworks Corp, <a href="http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/guidata.html&amp;http://www.mathworks.com/access/helpdesk/help/techdoc/creating_guis/f10-1000947.html">GUI Data</a></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=120&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/gui-callback-overview/' rel='bookmark' title='Tổng quan về hàm Callback trong lập trình GUI'>Tổng quan về hàm Callback trong lập trình GUI</a></li>
<li><a href='http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/' rel='bookmark' title='Hiển thị Led 7 thanh trên GUI Matlab'>Hiển thị Led 7 thanh trên GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/trinh-quan-ly-tai-lieu-hieu-qua-jabref-trong-ubuntu/' rel='bookmark' title='Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu'>Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/cach-trao-doi-du-lieu-hieu-qua-giua-cac-ham-callback-cua-gui/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Hiển thị Led 7 thanh trên GUI Matlab</title>
		<link>http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/</link>
		<comments>http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/#comments</comments>
		<pubDate>Wed, 28 May 2008 18:57:43 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/</guid>
		<description><![CDATA[Chào các bạn. Mình cũng đang làm cái giao diện cho đồ án tốt nghiệp và có tìm kiếm source Matlab cho Led7 thanh và tìm được một project rất hay. Từ đó, có thể nhúng vào trong GUI của mình. Các bạn có thể xem Project đó tại đây. Demo cái hình trông cho [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/get-data-from-scope-and-display-in-plot/' rel='bookmark' title='Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị'>Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị</a></li>
<li><a href='http://www.ngohaibac.net/ve-do-thi-trong-matla/' rel='bookmark' title='Vẽ đồ thị trong Matlab'>Vẽ đồ thị trong Matlab</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Chào các bạn.</p>
<p>Mình cũng đang làm cái giao diện cho đồ án tốt nghiệp và có tìm kiếm source Matlab cho Led7 thanh và tìm được một project rất hay. Từ đó, có thể nhúng vào trong GUI của mình.</p>
<p>Các bạn có thể xem Project đó <a href="http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=860&amp;objectType=File" target="_blank">tại đây.</a></p>
<p>Demo cái hình trông cho hoành tráng he he.</p>
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Blog%20Wordpress/Matlab_tutorial_050.gif" target="_blank"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Blog WordPress/Matlab_tutorial_050.gif" alt="" width="507" height="448" /></a></p>
<p>Khi các bạn download file mã nguồn về thì copy các file và thư mục sau vào Project GUI của bạn: <strong>led7.m</strong> và thư mục <strong>@led</strong>.</p>
<p>Để sử dụng, các bạn có thể xem và chạy file <strong>demo_led7.m, </strong>tuy nhiên mình sẽ hướng dẫn luôn vậy.</p>
<p>Để tạo ra đối tượng LED7 thì có 2 cách:</p>
<p>1. Cách tạo với các giá trị mặc định của nó, còn lại thì thay đổi sau:</p>
<pre>h1 = led7;</pre>
<p>2. Tạo với các tham số do mình đặt vào:</p>
<pre>% The second will define position, color, and value:
h2 = led7('pos',[.1 .2 .8 .2], ...
'digits',8, ...
'value',pi, ...
'offcolor',[0 .2 0], ...
'oncolor',[0 1 0], ...
'format','%6.4f');</pre>
<p>Trong đó,</p>
<ul>
<li>Thuộc tính pos là vị trí của led sẽ hiển thị, nó gồm [x y width high] nhưng tính theo tỉ lệ % so với điều khiển tạo lên đối tượng LED này. Ví dụ: x = 0, y = 0 thì nó sẽ nằm ở góc bên trái phía dưới.</li>
<li>Digits là số chữ số sẽ hiển thị lên.</li>
<li>Value: giá trị hiện lên các led</li>
<li>Format: chọn kiểu hiển thị. Trên đây là kiểu float với dấu phảy tĩnh gồm 6 số phần nguyên và 4 số ở phần thập phân.</li>
</ul>
<p>Như vậy, dựa vào ý nghĩa các tham sô ta có thể thay đổi tùy ý các giá trị này bằng các hàm set và get như với các điều khiển bình thường.</p>
<p>Ví dụ, nếu mình muốn nó hiện lên giá trị = 100 thì dùng lệnh:</p>
<pre>set(handles.h2, 'value', 100)</pre>
<p>Tuy nhiên, như thế thì sẽ chẳng bao giờ làm được vì nó sẽ báo lỗi rằng h2 không có trong cấu trúc handles.</p>
<p>Handles là một cấu trúc chứa các điều khiển. Ta dùng cấu trúc này để lưu lại object này để còn dùng khi khác.</p>
<pre>handles.h2 = h2;              % tạo biến trong handles tên là h2</pre>
<pre>guidata(hObject,handles); % lưu cấu trúc handles vào</pre>
<p>Nên mỗi lần cần thao tác với đối tượng này, thì cần phải gọi nó ra.</p>
<pre>h2 = handles.h2;</pre>
<p>Và nhớ không quên ghi lại vào nếu có bất kì thay đổi gì với đối tượng này.</p>
<p>Và điều chú ý cuối cùng: để hiển thị led ngay từ đầu thì nên viết vào trong hàm OpenFcn của GUI, khi GUI khởi động thì LED đã hiển thị rồi. Khởi tạo LED7 trong OpenFcn và đồng thời ghi luôn một trường vào handles để tránh tình trạng gọi trường đó mà chưa tạo ra.</p>
<p><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Blog WordPress/download_img.gif" alt="" /></p>
<p><a href="http://www.mathworks.com/matlabcentral/files/860/led_R12.1.zip">led_R12.1.zip</a></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=118&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/get-data-from-scope-and-display-in-plot/' rel='bookmark' title='Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị'>Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị</a></li>
<li><a href='http://www.ngohaibac.net/ve-do-thi-trong-matla/' rel='bookmark' title='Vẽ đồ thị trong Matlab'>Vẽ đồ thị trong Matlab</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Vẽ đồ thị trong Matlab</title>
		<link>http://www.ngohaibac.net/ve-do-thi-trong-matla/</link>
		<comments>http://www.ngohaibac.net/ve-do-thi-trong-matla/#comments</comments>
		<pubDate>Tue, 27 May 2008 02:38:35 +0000</pubDate>
		<dc:creator>minhthuat6573</dc:creator>
				<category><![CDATA[Giao tiếp RS232]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[FPGA]]></category>
		<category><![CDATA[RS232]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/?p=97</guid>
		<description><![CDATA[Mình đang làm đồ án về đề tài giao tiếp máy tính và vđk qua công com, mình có 1 thắc mắc mong được các bạn chỉ giáo: khi dữ liệu được truyền vào máy tính thì có sự kiện BytesAvailable, mình viết hàm serial_Callback() để đọc dữ liệu này như sau: function serial_CallBack(obj,event) inval=fread(obj,1); [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/' rel='bookmark' title='Hiển thị Led 7 thanh trên GUI Matlab'>Hiển thị Led 7 thanh trên GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/' rel='bookmark' title='C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab'>C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Mình đang làm đồ án về đề tài giao tiếp máy tính và vđk qua công com, mình có 1 thắc mắc mong được các bạn chỉ giáo: khi dữ liệu được truyền vào máy tính thì có sự kiện BytesAvailable, mình viết hàm serial_Callback() để đọc dữ liệu này như sau:</p>
<blockquote><p>function serial_CallBack(obj,event)<br />
inval=fread(obj,1);<br />
t=clock;<br />
load data;<br />
set(handles.edit1,'string',inval);</p>
<p>axes(handles.axes1);<br />
plot(t(6),inval);</p></blockquote>
<p>Kết quả là cái edit1 hiển thị được số liệu nhận được, còn axes thì không làm gì cả, mà xuất hiện cái hình bên ngoài. Mode để nhận dữ liệu từ cổng com mình đặt là 'byte', các bạn chỉ giúp nha.<a href="http://www.ngohaibac.net/lap-trinh-giao-tiep-rs232-qua-matlab/" target="_blank"><br />
</a></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=97&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/' rel='bookmark' title='Hiển thị Led 7 thanh trên GUI Matlab'>Hiển thị Led 7 thanh trên GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/' rel='bookmark' title='C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab'>C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/ve-do-thi-trong-matla/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Chuyển ma trận GF sang ma trận b&#236;nh thường để xử l&#253; dữ liệu</title>
		<link>http://www.ngohaibac.net/chuyen-ma-tran-gf-sang-ma-tran-binh-thuong-de-xu-ly-du-lieu/</link>
		<comments>http://www.ngohaibac.net/chuyen-ma-tran-gf-sang-ma-tran-binh-thuong-de-xu-ly-du-lieu/#comments</comments>
		<pubDate>Sat, 10 May 2008 05:54:37 +0000</pubDate>
		<dc:creator>TRALAM</dc:creator>
				<category><![CDATA[Matlab]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/?p=96</guid>
		<description><![CDATA[Theo &#253; anh admin th&#236; t&#244;i viết b&#224;i n&#224;y với mục đ&#237;ch l&#224; gi&#250;p ai đang v&#224; sẽ nghi&#234;n cứu m&#227; h&#243;a FEC xử l&#253; dữ liệu của ma trận Galois field. M&#227; h&#243;a FEC (Foward Error Control) hay c&#242;n gọi l&#224; Eror control Coding-l&#224; một m&#227; h&#243;a sửa lỗi được sử dụng kh&#225; nhiều [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/sang-nam-moi-chuyen-blog-sang-nha-moi/' rel='bookmark' title='Sang năm mới chuyển blog sang nhà mới'>Sang năm mới chuyển blog sang nhà mới</a></li>
<li><a href='http://www.ngohaibac.net/cung-nhau-chuyen-sang-blog-yahoo-360-plus/' rel='bookmark' title='Cùng nhau chuyển sang Blog Yahoo 360 Plus'>Cùng nhau chuyển sang Blog Yahoo 360 Plus</a></li>
<li><a href='http://www.ngohaibac.net/phuong-phap-quet-keypad-ma-tran-ban-phim-dung-ngat-timer/' rel='bookmark' title='Phương pháp quét Keypad ma trận dùng ngắt Timer'>Phương pháp quét Keypad ma trận dùng ngắt Timer</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Theo &#253; anh admin th&#236; t&#244;i viết b&#224;i n&#224;y với mục đ&#237;ch l&#224; gi&#250;p ai đang v&#224; sẽ nghi&#234;n cứu m&#227; h&#243;a FEC xử l&#253; dữ liệu của ma trận Galois field.</p>
<p>M&#227; h&#243;a FEC (Foward Error Control) hay c&#242;n gọi l&#224; Eror control Coding-l&#224; một m&#227; h&#243;a sửa lỗi được sử dụng kh&#225; nhiều trong th&#244;ng tin di động, th&#244;ng tin vệ tinh, truyền h&#236;nh số/DVB,...v&#224; cả trong lĩnh vực IT.</p>
<p>M&#227; h&#243;a FEC thuộc dạng m&#227; h&#243;a k&#234;nh, gồm m&#227; khối (block coding) như m&#227; RS (Reed-solomon), BCH, Hamming...v&#224; m&#227; chập (convolutional coding) như m&#227; CC (convolutional coding), viterbi decoding.</p>
<p>RS v&#224; CC c&#243; nhiệm vụ sửnoa sai cho t&#237;n hiệu thu được. RS v&#236; l&#224; thuộc m&#227; khối tốc độ cao cho n&#234;n khi kết hợp với m&#227; chập sẽ gi&#250;p tăng khả năng sửa sai cho m&#227; chập.</p>
<p>RS cũng l&#224; m&#227; BCH cho n&#234;n c&#225;c gi&#225; trị của c&#225;c hệ số lấy từ trường Galois field (GF) (v&#237; dụ về GF: ch&#250;ng ta d&#249;ng số thập ph&#226;n th&#236; ta gọi l&#224; GF(10) chỉ gồm c&#225;c số từ 0 đến 9, số nhị ph&#226;n th&#236; c&#243; GF(2) gồm c&#225;c số 0,1. RS th&#236; c&#243; GF(2^8) n&#234;n gọi l&#224; GF(2) mở rộng). Cho n&#234;n khi sử dụng Matlab để m&#227; h&#243;a RS th&#236; dữ liệu ra sẽ l&#224; một dạng ma trận trường GF.</p>
<blockquote><p>&gt;&gt; n = 7; k = 3; % Codeword length and message length     <br />m = 3; % Number of bits in each symbol      <br />msg = gf([1 6 4; 0 4 3],m); % Message is a Galois array.      <br />c = rsenc(msg,n,k)</p>
<p>c = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)</p>
<p>Array elements =</p>
<p>1 6 4 4 3 6 3     <br />0 4 3 3 7 4 7</p>
</blockquote>
<p>Nhưng rất kh&#243; để c&#225;c bạn xử l&#253; ma trận c đ&#243; như một ma trận b&#236;nh thường.</p>
<blockquote><p>c2=de2bi(c)     <br />??? Error using ==&gt; de2bi      <br />Only string and numeric arguments are accepted.</p>
</blockquote>
<p>Nếu kết hợp với m&#227; CC cũng gặp vấn đề tương tự. C&#225;c bạn xem trang n&#224;y cũng c&#243; vấn đề tương tự:<a href="http://www.ddth.com/showthread.php?t=61896" target="_blank">http://www.ddth.com/showthread.php?t=61896</a></p>
<p>V&#236; vậy, hướng giải quyết sẽ l&#224; chuyển ma trận GF đ&#243; về dạng ma trận b&#236;nh thường (ko thuộc GF nữa) =&gt; sử dụng lệnh sau: double(matranGF.x)</p>
<p>V&#237; dụ tr&#234;n sửa lại:</p>
<blockquote><p>&gt;&gt;n = 7; k = 3; % Codeword length and message length     <br />m = 3; % Number of bits in each symbol      <br />msg = gf([1 6 4; 0 4 3],m); % Message is a Galois array.      <br />c = rsenc(msg,n,k); % Code will be a Galois array.      <br />c1=double(c.x); %C&#193;I C&#194;U LỆNH QUAN TRỌNG Ở Đ&#194;Y!!</p>
<p>&gt;&gt;c1 =</p>
<p>1 6 4 4 3 6 3     <br />0 4 3 3 7 4 7</p>
</blockquote>
<p>c1 đ&#227; trở th&#224;nh ma trận th&#244;ng thường, từ đ&#226;y ta c&#243; thể xử l&#253; n&#243; đơn giản</p>
<blockquote><p>&gt;&gt;c2=de2bi(c1)</p>
<p>c2 =</p>
<p>1 0 0     <br />0 0 0      <br />0 1 1      <br />0 0 1      <br />0 0 1      <br />1 1 0      <br />0 0 1      <br />1 1 0      <br />1 1 0      <br />1 1 1      <br />0 1 1      <br />0 0 1      <br />1 1 0      <br />1 1 1</p>
</blockquote>
<p>@admin: nhờ anh giải th&#237;ch gi&#250;p em về c&#225;i lệnh double(c.x) với. Tại em cũng đọc lung tung n&#234;n mới t&#236;m ra th&#244;i m&#224; <img src='http://www.ngohaibac.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=96&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/sang-nam-moi-chuyen-blog-sang-nha-moi/' rel='bookmark' title='Sang năm mới chuyển blog sang nhà mới'>Sang năm mới chuyển blog sang nhà mới</a></li>
<li><a href='http://www.ngohaibac.net/cung-nhau-chuyen-sang-blog-yahoo-360-plus/' rel='bookmark' title='Cùng nhau chuyển sang Blog Yahoo 360 Plus'>Cùng nhau chuyển sang Blog Yahoo 360 Plus</a></li>
<li><a href='http://www.ngohaibac.net/phuong-phap-quet-keypad-ma-tran-ban-phim-dung-ngat-timer/' rel='bookmark' title='Phương pháp quét Keypad ma trận dùng ngắt Timer'>Phương pháp quét Keypad ma trận dùng ngắt Timer</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/chuyen-ma-tran-gf-sang-ma-tran-binh-thuong-de-xu-ly-du-lieu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Tạo h&#236;nh nền cho giao diện GUI</title>
		<link>http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/</link>
		<comments>http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 03:00:01 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/</guid>
		<description><![CDATA[Ch&#224;o c&#225;c bạn. Trong b&#224;i n&#224;y m&#236;nh sẽ hướng dẫn c&#225;c bạn tạo h&#236;nh nền hoặc một phần của giao diện GUI. &#221; tưởng: d&#249;ng một Axes control để load h&#236;nh ảnh. Như vậy, ngay khi chạy GUI th&#236; ảnh đ&#227; hiển thị l&#234;n axes rồi n&#234;n tr&#244;ng như l&#224; h&#236;nh nền của GUI vậy. [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/' rel='bookmark' title='Tạo file .exe cho giao diện GUI Matlab'>Tạo file .exe cho giao diện GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/dung-theme-khac-cho-blog/' rel='bookmark' title='Thay đổi giao diện cho blog'>Thay đổi giao diện cho blog</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Ch&#224;o c&#225;c bạn. </p>
<p>Trong b&#224;i n&#224;y m&#236;nh sẽ hướng dẫn c&#225;c bạn tạo h&#236;nh nền hoặc một phần của giao diện GUI.</p>
<p>&#221; tưởng: d&#249;ng một Axes control để load h&#236;nh ảnh. Như vậy, ngay khi chạy GUI th&#236; ảnh đ&#227; hiển thị l&#234;n axes rồi n&#234;n tr&#244;ng như l&#224; h&#236;nh nền của GUI vậy. V&#236; thế, ch&#250;ng ta phải viết lệnh hiển thị h&#236;nh ảnh v&#224;o h&#224;m CreateFcn: l&#224; h&#224;m được gọi l&#234;n trước khi giao diện GUI hiển thị trước người d&#249;ng.</p>
<p>C&#225;c bạn tạo một giao diện GUI đơn giản gồm c&#243;: axes control với k&#237;ch thước ch&#237;nh l&#224; v&#249;ng c&#225;c bạn cần đặt h&#236;nh nền. C&#225;c điều khiển kh&#225;c c&#225;c bạn đặt tr&#234;n c&#225;i axes n&#224;y n&#234;n m&#236;nh chỉ th&#234;m v&#224;i điều khiển nhưng kh&#244;ng viết lệnh cho c&#225;c điều khiển n&#224;y.</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_016.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_016.gif" width="550" height="440" /></a> </p>
<p>Click v&#224;o Axes control chọn h&#224;m CreateFunction:</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_017.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_017.gif" width="550" height="440" /></a> </p>
<p>Khi đ&#243; ch&#250;ng ta chỉ cần g&#245; lệnh để hiển thị h&#236;nh ảnh v&#224;o h&#224;m n&#224;y m&#224; th&#244;i:</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_018.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_018.gif" width="550" height="96" /></a> </p>
<p>Trong b&#224;i n&#224;y m&#236;nh chọn h&#236;nh ở trong <em>C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures</em>, c&#225;c bạn c&#243; thể chọn đường dẫn t&#249;y &#253; đến h&#236;nh m&#224; c&#225;c bạn th&#237;ch hiển thị.</p>
<p>Để biết th&#234;m về lệnh hiển thị h&#236;nh ảnh, c&#225;c bạn g&#245; lệnh:</p>
<blockquote><p>help imshow</p>
</blockquote>
<p>V&#236; b&#224;i n&#224;y đơn giản n&#234;n m&#236;nh kh&#244;ng cần phải upload source l&#234;n cho c&#225;c bạn nữa nh&#233;.</p>
<p>Khi chạy chương tr&#236;nh sẽ hiển thị như thế n&#224;y:</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_019.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_019.gif" /></a>     <br />Ch&#250;c c&#225;c bạn th&#224;nh c&#244;ng.</p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=84&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/' rel='bookmark' title='Tạo file .exe cho giao diện GUI Matlab'>Tạo file .exe cho giao diện GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/dung-theme-khac-cho-blog/' rel='bookmark' title='Thay đổi giao diện cho blog'>Thay đổi giao diện cho blog</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Tạo file .exe cho giao diện GUI Matlab</title>
		<link>http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/</link>
		<comments>http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 19:29:31 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Giao tiếp RS232]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[RS232]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/tao-file-exe-cua-ung-dung-gui/</guid>
		<description><![CDATA[Ch&#224;o c&#225;c bạn. Sau khi c&#225;c bạn đ&#227; biết c&#225;ch để viết một giao diện GUI, biết c&#225;ch dịch ra file .exe tự chạy tr&#234;n một m&#225;y kh&#225;c th&#236; b&#226;y giờ m&#236;nh kết hợp l&#224;m sao đ&#226;y ?? B&#224;i n&#224;y m&#236;nh dịch một project GUI tương đối l&#224; nhiều th&#224;nh phần: RS232 Communication đ&#227; được [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/' rel='bookmark' title='Tạo h&#236;nh nền cho giao diện GUI'>Tạo h&#236;nh nền cho giao diện GUI</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Ch&#224;o c&#225;c bạn.</p>
<p>Sau khi c&#225;c bạn đ&#227; biết c&#225;ch để viết một giao diện GUI, biết c&#225;ch dịch ra file .exe tự chạy tr&#234;n một m&#225;y kh&#225;c th&#236; b&#226;y giờ m&#236;nh kết hợp l&#224;m sao đ&#226;y ?? </p>
<p>B&#224;i n&#224;y m&#236;nh dịch một project GUI tương đối l&#224; nhiều th&#224;nh phần: RS232 Communication đ&#227; được post trong b&#224;i <a href="http://www.ngohaibac.net/lap-trinh-giao-tiep-rs232-qua-matlab/" target="_blank">Lập tr&#236;nh giao tiếp RS232 qua Matlab</a></p>
<p>Bước 1: Thiết lập m&#244;i trường dịch (bước n&#224;y bỏ qua nếu đ&#227; l&#224;m rồi )</p>
<p>Bước 2: G&#245; lệnh deploytool v&#224; v&#224;o menu File chọn New Project, chọn Standalone Application, chọn t&#234;n project v&#224; nơi lưu project.</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_009.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_009.gif" /></a> </p>
<p>Giao diện Deployment Tool sẽ gồm c&#243; Main function, Other files v&#224; C/C++ files.</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_010.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_010.gif" /></a> </p>
<p>Một project GUI sẽ gồm c&#243; 2 file .m v&#224; .fig v&#224; c&#243; thể th&#234;m c&#225;c file .m v&#224; .fig nếu gọi c&#225;c figure kh&#225;c. Như vậy file add v&#224;o trong Main Function l&#224; file .m l&#224; file ch&#237;nh sẽ chạy project GUI đ&#243;.</p>
<p><a title="lightbox" href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_011.gif" rel="shadowbox[sbpost-82];player=img;" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_011.gif" width="550" height="404" /></a> </p>
<p>C&#225;c bạn browse đến thư mục RS232 Communication v&#224; sẽ thấy n&#243; chỉ cho ph&#233;p chọn file .m. Ở đ&#226;y m&#236;nh phải chọn file RS232_Communication.m v&#236; l&#224; file ch&#237;nh, c&#242;n modaldlg.m l&#224; file để mở cửa sổ y&#234;u cầu chọn Yes, no.</p>
<p>Tiếp tục, click chuột phải v&#224;o Other files, chọn Add files v&#224; add c&#225;c file c&#242;n lại trong project (chỉ c&#225;c file .m v&#224; .fig th&#244;i).</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_012.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_012.gif" width="550" height="404" /></a> </p>
<p>Xong xu&#244;i th&#236; giao diện sẽ ra như thế n&#224;y:</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_013.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_013.gif" width="550" height="335" /></a> </p>
<p>Bước 3: Dịch project</p>
<p>B&#226;y giờ l&#224; bước dịch, c&#225;c bạn v&#224;o menu Tools -&gt; Build (Ctr + B). Sau đ&#243; đi uống nước chờ n&#243; dịch xong hehe. C&#225;i n&#224;y chờ l&#226;u phết, đừng c&#243; n&#243;ng nh&#233;. Kh&#244;ng b&#225;o lỗi g&#236; th&#236; ok ngay.</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_014.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_014.gif" width="554" height="336" /></a> </p>
<p>Xong vụ rồi th&#236; v&#224;o thư mục \distrib sẽ thấy file .exe của m&#236;nh. Nhấn thử v&#224;o chạy xem thế n&#224;o.</p>
<p>C&#242;n muốn đem sang m&#225;y kh&#225;c th&#236; phải đ&#243;ng g&#243;i, v&#224;o Tools chọn Package (Ctr + P):</p>
<p><a title="lightbox" href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_015.gif" rel="shadowbox[sbpost-82];player=img;" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_015.gif" width="550" height="138" /></a> </p>
<p>Sang m&#225;y kh&#244;ng c&#224;i Matlab th&#236; copy đồng thời file package v&#224; McrInstaller v&#224;o một thư mục, chạy ngon l&#224;nh lu&#244;n. M&#236;nh thử nghiệm rồi.</p>
<p>Chạy n&#243; sẽ ra thế n&#224;y:</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_005.gif" rel="lightbox" target="_blank"><img src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Matlab_tutorial_005.gif" width="550" height="393" /></a> </p>
<p><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Blog WordPress/download_img.gif" /> </p>
<p><a title="" href="http://cid-6eb956faea77192b.skydrive.live.com/self.aspx/Matlab/RS232_Communication_exe.zip">RS232_Communication_exe.zip</a></p>
<p>M&#236;nh c&#243; upload file .exe m&#224; m&#236;nh đ&#227; dịch l&#224;m bằng chứng he he.</p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=82&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/' rel='bookmark' title='Tạo h&#236;nh nền cho giao diện GUI'>Tạo h&#236;nh nền cho giao diện GUI</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Lập trình giao tiếp RS232 qua Matlab</title>
		<link>http://www.ngohaibac.net/lap-trinh-giao-tiep-rs232-qua-matlab/</link>
		<comments>http://www.ngohaibac.net/lap-trinh-giao-tiep-rs232-qua-matlab/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 00:17:03 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Giao tiếp RS232]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RS232]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/l%e1%ba%adp-trnh-giao-ti%e1%ba%bfp-rs232-qua-matlab/</guid>
		<description><![CDATA[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 [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/huong-dan-lap-trinh-giao-tiep-rs232-tren-pc-bang-visual-c-60/' rel='bookmark' title='Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0'>Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0</a></li>
<li><a href='http://www.ngohaibac.net/thu-vien-giao-tiep-rs232-cho-pic18-bang-htpic18/' rel='bookmark' title='Thư viện giao tiếp RS232 cho PIC18 bằng HTPIC18'>Thư viện giao tiếp RS232 cho PIC18 bằng HTPIC18</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Chào các bạn.</p>
<p>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.</p>
<p><span style="color: #0000ff; font-size: medium;"><strong> I. Đối tượng Serial Object</strong></span></p>
<p>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 rùi. Để test nó các bạn hãy đấu tắt 2 chân 2 và 3 (TX và RX) của cổng COM lại.<br />
Đầu tiên mình sẽ đưa ra môt chương trình thật là đơn gian, thiết lập ít tham số, còn chi tiết về thiết lập tham số nó thế nào? ý nghĩa ra sao? thì sẽ nói sau, mình cứ làm đơn giản trước rùi phức tạp -&gt; hiểu hết về thiết lập này sau.<br />
Bài này mình giới thiệu cách tạo đối tượng, kết nối, viêt hàm callback.<br />
Tạo đối tượng:<br />
Chúng ta gõ lệnh và kết quả hiện luôn (nhớ là k có dấu ; ở cuối lệnh</p>
<blockquote>
<pre>&gt;&gt; s = serial('COM1')

   Serial Port Object : Serial-COM1

   Communication Settings
      Port:               COM1
      BaudRate:           9600
      Terminator:         'LF'

   Communication State
      Status:             closed
      RecordStatus:       off

   Read/Write State
      TransferStatus:     idle
      BytesAvailable:     0
      ValuesReceived:     0
      ValuesSent:         0</pre>
</blockquote>
<p>Như vậy đối tượng là Serial-COM1, tốc độ 9600,..</p>
<p>Tiếp theo, chúng ta xem các tham số của đối tượng như thế nào bằng lệnh get(s):</p>
<blockquote>
<pre>&gt;&gt; get(s)
    ByteOrder = littleEndian
    BytesAvailable = 0
    BytesAvailableFcn =
    BytesAvailableFcnCount = 48
    BytesAvailableFcnMode = terminator
    BytesToOutput = 0
    ErrorFcn =
    InputBufferSize = 512
    Name = Serial-COM1
    ObjectVisibility = on
    OutputBufferSize = 512
    OutputEmptyFcn =
    RecordDetail = compact
    RecordMode = overwrite
    RecordName = record.txt
    RecordStatus = off
    Status = closed
    Tag =
    Timeout = 10
    TimerFcn =
    TimerPeriod = 1
    TransferStatus = idle
    Type = serial
    UserData = []
    ValuesReceived = 0
    ValuesSent = 0

    SERIAL specific properties:
    BaudRate = 9600
    BreakInterruptFcn =
    DataBits = 8
    DataTerminalReady = on
    FlowControl = none
    Parity = none
    PinStatus = [1x1 struct]
    PinStatusFcn =
    Port = COM1
    ReadAsyncMode = continuous
    RequestToSend = on
    StopBits = 1
    Terminator = LF</pre>
</blockquote>
<p>Các bạn thấy là có rất nhiều tham số phải không? chúng ta ở đây quan tâm đến tham số: <strong>BytesAvailableFcn</strong> tham số này chưa thết lập. Tham số này chính là hàm callback mà nó sẽ gọi khi có byte nhận được ở bộ đệm nhận.Vậy chúng ta viết hàm này chính là viết hàm OnComm đáp ứng sự kiện ReceiveEvent như trong MSCOMM của MS vậy.</p>
<p>Thiết lập này phải thực hiện trước khi mở cổng để giao tiếp, nên chúng ta sẽ viết hàm callback trước. Bạn viết 1 m-file với tên Serial_Callback.m như sau:</p>
<blockquote>
<pre>function Serial_Callback(obj,event)
    ind = fscanf(obj)</pre>
</blockquote>
<p>Cú pháp của hàm callback như trên với obj là đối tượng kiểu Serial như trên. Hàm có tác dụng đọc dữ liệu và hiển thị luôn kết quả lên command window.</p>
<p>Chúng ta đưa tham số tên hàm vào cho đối tượng s của ta:</p>
<blockquote>
<pre>&gt;&gt; s.BytesAvailableFcn = @Serial_Callback;</pre>
</blockquote>
<p>Tiếp theo chúng ta bắt đầu giao tiếp:</p>
<blockquote>
<pre>&gt;&gt;fopen(s);
&gt;&gt;fprintf(s,"chao cac ban");</pre>
</blockquote>
<p>Sau đó các bạn xem kết quả thế nào, sau đó thử truyền các kí tự khác xem bằng lệnh fprintf(s,...), hoặc thử với vi xử lý xem cho nó truyền lên các bạn sẽ thấy rất hay.</p>
<p>Bạn không giao tiếp nữa thì đóng cổng lại:</p>
<blockquote>
<pre>&gt;&gt;fclose(s);</pre>
</blockquote>
<h1><span style="color: #0000ff; font-size: medium;">2. Chương trình RS232 Communication</span></h1>
<p>Đây là  chương trình mình viết dùng GUI, đã test với mạch FPGA Spartan 3E rồi.</p>
<p><span style="color: #0000ff;">Cách dùng:</span></p>
<p>1/ Chọn tham số cho Rs232 rùi ấn nút Connect để bắt đầu kết nối với RS232 nhé.</p>
<p>2/ Nhập dữ liệu vào ô TX rùi nhấn nút Send để gửi dữ liệu.</p>
<p>3/ Để thay đổi tham số (tốc độ, ..) cho RS232 thì phải nhấn Disconnect trước rùi chỉnh tham số nhé. Sau đó quay lại bước 1.</p>
<p><a href="http://www.ngohaibac.net/wp-content/uploads/2008/04/Matlab_tutorial_005.gif" rel="shadowbox[sbpost-75];player=img;"><img class="aligncenter size-medium wp-image-1640" title="Matlab_tutorial_005" src="http://www.ngohaibac.net/wp-content/uploads/2008/04/Matlab_tutorial_005-400x285.gif" alt="" width="400" height="285" /></a></p>
<p><a href="http://www.ngohaibac.net/wp-content/uploads/2008/04/Matlab_tutorial_005.gif" rel="shadowbox[sbpost-75];player=img;"><img class="aligncenter size-medium wp-image-1640" title="Matlab_tutorial_005" src="http://www.ngohaibac.net/wp-content/uploads/2008/04/Matlab_tutorial_005-400x285.gif" alt="" width="400" height="285" /></a></p>
<p>Các bạn chú ý, đây là chương trình mình viết dưới dạng mở, tức là các bạn có thể thêm code vào các hàm để phục vụ mục đích của mình. Đó chính là các hàm ngắt nhận, ngắt gửi,...  BytesAvailableFcnCount là số byte nhận được trong bộ đệm nhận trước khi xảy ra ngắt nhận.</p>
<p>Các hàm đó là:</p>
<blockquote>
<li>function ByteAvailable_Callback(obj, event)</li>
<li>function OutputEmpty_Callback(obj, event)</li>
<li>function Error_Callback (obj, event)</li>
<li>function PinStatus_Callback(obj, event)</li>
<li>function Timer_Callback (obj,event)</li>
<li>function BreakInterrupt_Callback(obj, event)</li>
</blockquote>
<p>Khi các bạn muốn thao tác với dữ liệu vừa nhận được thì các bạn edit thêm code trong hàm sau:</p>
<p><strong>function ByteAvailable_Callback(obj, event)</strong></p>
<p>Các bạn hãy lấy chương trình này thử xem mình viết ra sao nào <img src='http://www.ngohaibac.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Tải chương trình: <a class="downloadlink" href="http://www.ngohaibac.net/download/RS232-Communication.zip" title=" downloaded 1187 times" >RS232 Communication (1187)</a></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=75&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/huong-dan-lap-trinh-giao-tiep-rs232-tren-pc-bang-visual-c-60/' rel='bookmark' title='Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0'>Hướng dẫn lập trình giao tiếp RS232 trên PC bằng Visual C++ 6.0</a></li>
<li><a href='http://www.ngohaibac.net/thu-vien-giao-tiep-rs232-cho-pic18-bang-htpic18/' rel='bookmark' title='Thư viện giao tiếp RS232 cho PIC18 bằng HTPIC18'>Thư viện giao tiếp RS232 cho PIC18 bằng HTPIC18</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/lap-trinh-giao-tiep-rs232-qua-matlab/feed/</wfw:commentRss>
		<slash:comments>80</slash:comments>
		</item>
		<item>
		<title>Tổng quan về hàm Callback trong lập trình GUI</title>
		<link>http://www.ngohaibac.net/gui-callback-overview/</link>
		<comments>http://www.ngohaibac.net/gui-callback-overview/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 00:01:41 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/gui-callback-overview/</guid>
		<description><![CDATA[Sau khi c&#225;c bạn tạo c&#225;i giao diện đ&#227; xong th&#236; đến phần lập tr&#236;nh rất quan trọng, ch&#237;nh l&#224; lập tr&#236;nh c&#225;c h&#224;nh vi của c&#225;c điều khiển để đ&#225;p ứng lại c&#225;c sự kiện như nhấn ph&#237;m, k&#233;o thanh trượt, khi chọn menu, ... đ&#243; ch&#237;nh l&#224; c&#225;c h&#224;m Callback (giống như c&#225;c [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/cach-trao-doi-du-lieu-hieu-qua-giua-cac-ham-callback-cua-gui/' rel='bookmark' title='C&#225;ch trao đổi dữ liệu hiệu quả giữa các hàm Callback của GUI'>C&#225;ch trao đổi dữ liệu hiệu quả giữa các hàm Callback của GUI</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/trinh-quan-ly-tai-lieu-hieu-qua-jabref-trong-ubuntu/' rel='bookmark' title='Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu'>Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Sau khi c&#225;c bạn tạo c&#225;i giao diện đ&#227; xong th&#236; đến phần lập tr&#236;nh rất quan trọng, ch&#237;nh l&#224; lập tr&#236;nh c&#225;c h&#224;nh vi của c&#225;c điều khiển để đ&#225;p ứng lại c&#225;c sự kiện như nhấn ph&#237;m, k&#233;o thanh trượt, khi chọn menu, ... đ&#243; ch&#237;nh l&#224; c&#225;c h&#224;m Callback (giống như c&#225;c h&#224;m sự kiện trong Visual Basic).</p>
<p><font color="#0000ff">Thế n&#224;o l&#224; h&#224;m Callback ?</font></p>
<p>Callback l&#224; một h&#224;m m&#224; c&#225;c bạn viết mi&#234;u tả h&#224;nh vi của một th&#224;nh phần GUI x&#225;c định hoặc l&#224; của ch&#237;nh GUI figure, điều khiển c&#225;c h&#224;nh vi của ch&#250;ng bằng c&#225;ch thực hiện một số h&#224;nh động được viết trong h&#224;m, để đ&#225;p ứng lại một sự kiện của ch&#237;nh th&#224;nh phần đ&#243;. C&#225;ch lập tr&#236;nh n&#224;y thường gọi l&#224; : Lập tr&#236;nh l&#225;i sự kiện (event driven programming).</p>
<p>V&#237; dụ, khi bạn nhấn một Button th&#236; vẽ đồ thị đ&#250;ng kh&#244;ng ?? Vậy th&#236; khi nhấn ph&#237;m th&#236; hiển nhi&#234;n đ&#227; gọi h&#224;m Callback nhấn ph&#237;m của Button đ&#243;, v&#224; trong h&#224;m Callback n&#224;y c&#243; lệnh vẽ đồ thị rồi.</p>
<p><font color="#0000ff">C&#225;c loại h&#224;m Callback ?</font></p>
<p>Mỗi th&#224;nh phần c&#243; nhiều h&#224;m Callback kh&#225;c nhau, c&#225;c bạn xem th&#234;m ở Properties nh&#233;. Sau đ&#226;y liệt k&#234; c&#225;c loại h&#224;m Callback v&#224; c&#225;c điều khiển c&#243; thể c&#243; h&#224;m n&#224;y.</p>
<table border="1" cellspacing="0" cellpadding="2" width="558">
<tbody>
<tr>
<td valign="top" width="162">Callback property</td>
<td valign="top" width="196">Sự kiện xảy ra</td>
<td valign="top" width="197">Th&#224;nh phần c&#243; h&#224;m n&#224;y</td>
</tr>
<tr>
<td valign="top" width="163">ButtonDownFcn</td>
<td valign="top" width="196">Thực hiện khi người d&#249;ng nhấn chuột l&#234;n hoặc trong 5 pixels của component hoặc figure. Nếu l&#224; component th&#236; thuộc t&#237;nh Enable phải on ( tất nhi&#234;n r&#249;i ).</td>
<td valign="top" width="197">
<p>Axes,figure,button            <br />group,panel,user             <br />interfacecontrols</p>
</td>
</tr>
<tr>
<td valign="top" width="163">Callback</td>
<td valign="top" width="196">
<p>H&#224;nh động của c&#225;c component, v&#237; dụ như thực thi khi người d&#249;ng click l&#234;n Push Button hoặc chọn một th&#224;nh phần menu.</p>
</td>
<td valign="top" width="197">
<p>Contextmenu,           <br />menu,userinterface            <br />controls</p>
</td>
</tr>
<tr>
<td valign="top" width="163">CloseRequestFcn</td>
<td valign="top" width="196">Thực thi trước khi figure đ&#243;ng.</td>
<td valign="top" width="197">Figure</td>
</tr>
<tr>
<td valign="top" width="163">CreateFcn</td>
<td valign="top" width="196">
<p>Tạo c&#225;c th&#224;nh phần.N&#243; được d&#249;ng để khởi tạo c&#225;c th&#224;nh phần khi n&#243; được tạo ra. N&#243; thực thi sau khi th&#224;nh phần hoặc figure được tạo, nhưng trước khi hiển thị l&#234;n tr&#234;n giao diện người d&#249;ng.</p>
</td>
<td valign="top" width="197">
<p>Axes,figure,button           <br />group,contextmenu,            <br />menu,panel,user            <br />interfacecontrols</p>
</td>
</tr>
<tr>
<td valign="top" width="163">DeleteFcn</td>
<td valign="top" width="196">
<p>X&#243;a th&#224;nh phần. N&#243; c&#243; thể được d&#249;ng để thực hiện h&#224;nh động x&#243;a bỏ trước khi component hoặc figure bị hủy bỏ.</p>
</td>
<td valign="top" width="197">
<p>Axes,figure,button           <br />group,contextmenu,            <br />menu,panel,user            <br />interfacecontrols</p>
</td>
</tr>
<tr>
<td valign="top" width="163">KeyPressFcn</td>
<td valign="top" width="196">
<p>Thực thi khi người d&#249;ng nhấn một ph&#237;m trong keyboard v&#224; component hoặc figure của h&#224;m callback đ&#243; đang được focus.</p>
</td>
<td valign="top" width="197">
<p>Figure,userinterface           <br />controls</p>
</td>
</tr>
<tr>
<td valign="top" width="163">KeyReleaseFcn</td>
<td valign="top" width="196">
<p>Thực thi khi người d&#249;ng nhả một ph&#237;m đang bấm v&#224; figure vẫn đang được focus.</p>
</td>
<td valign="top" width="197">Figure</td>
</tr>
<tr>
<td valign="top" width="163">ResizeFcn</td>
<td valign="top" width="196">
<p>Thực thi khi người d&#249;ng thay đổi k&#237;ch thước của panel, button group, hoặc figure với điều kiện thuộc t&#237;nh <strong><em>Resize</em></strong> của figure = on.</p>
</td>
<td valign="top" width="197">
<p>Buttongroup,figure,           <br />panel</p>
</td>
</tr>
<tr>
<td valign="top" width="163">SelectiononChangeFcn</td>
<td valign="top" width="196">
<p>Thực thi khi người d&#249;ng lựa chọn một n&#250;t Radio Button kh&#225;c hoặc toggle button kh&#225;c trong th&#224;nh phần Button Group.</p>
</td>
<td valign="top" width="197">Buttongroup</td>
</tr>
<tr>
<td valign="top" width="163">WindowButtonDownFcn</td>
<td valign="top" width="196">
<p>Thực thi khi bạn nhấn chuột (tr&#225;i hoặc phải) trong khi con trỏ vẫn nằm trong v&#249;ng cửa sổ figure.</p>
</td>
<td valign="top" width="197">Figure</td>
</tr>
<tr>
<td valign="top" width="163">WindowButtonMotionFcn</td>
<td valign="top" width="196">
<p>Thực thi khi bạn di chuyển con trỏ trong v&#249;ng cửa sổ figure.</p>
</td>
<td valign="top" width="197">Figure</td>
</tr>
<tr>
<td valign="top" width="163">WindowButtonUpFcn</td>
<td valign="top" width="196">
<p>Ban đầu bạn nhấn chuột (tr&#225;i, hoặc phải) th&#236; khi nhả ph&#237;m đ&#243; ra th&#236; h&#224;m n&#224;y sẽ được gọi.</p>
</td>
<td valign="top" width="197">Figure</td>
</tr>
<tr>
<td valign="top" width="163">WindowScrollWheelFcn</td>
<td valign="top" width="196">
<p>Thực thi khi n&#250;t cuộn của chuột cuộn trong khi figure vẫn trong tầm focus.</p>
</td>
<td valign="top" width="197">Figure</td>
</tr>
</tbody>
</table>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=69&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/cach-trao-doi-du-lieu-hieu-qua-giua-cac-ham-callback-cua-gui/' rel='bookmark' title='C&#225;ch trao đổi dữ liệu hiệu quả giữa các hàm Callback của GUI'>C&#225;ch trao đổi dữ liệu hiệu quả giữa các hàm Callback của GUI</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/trinh-quan-ly-tai-lieu-hieu-qua-jabref-trong-ubuntu/' rel='bookmark' title='Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu'>Trình quản lý tài liệu hiệu quả JabRef - Reference manager trong Ubuntu</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/gui-callback-overview/feed/</wfw:commentRss>
		<slash:comments>70</slash:comments>
		</item>
		<item>
		<title>C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab</title>
		<link>http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/</link>
		<comments>http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 15:00:09 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/</guid>
		<description><![CDATA[Ch&#224;o c&#225;c bạn. M&#236;nh xin gửi c&#225;c bạn t&#224;i liệu Matlab 7 - Creating Graphical User Interfaces, l&#224; t&#224;i liệu dạng .pdf của t&#224;i liệu trong Help của Matlab. C&#225;c bạn n&#224;o c&#243; thể tự đọc hiểu được English th&#236; t&#224;i liệu n&#224;y l&#224; qu&#225; đầy đủ rồi. C&#225;c b&#224;i viết của m&#236;nh dựa một [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/lap-trinh-c-cho-vi-dieu-khien/' rel='bookmark' title='Lập trình C cho vi điều khiển'>Lập trình C cho vi điều khiển</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/so-sanh-cac-bo-dieu-khien-toc-do-dong-co-dc/' rel='bookmark' title='So sánh các bộ điều khiển tốc độ động cơ DC'>So sánh các bộ điều khiển tốc độ động cơ DC</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Ch&#224;o c&#225;c bạn.</p>
<p>M&#236;nh xin gửi c&#225;c bạn t&#224;i liệu <a href="http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/buildgui.pdf">Matlab 7 - Creating Graphical User Interfaces</a>, l&#224; t&#224;i liệu dạng .pdf của t&#224;i liệu trong Help của Matlab. C&#225;c bạn n&#224;o c&#243; thể tự đọc hiểu được English th&#236; t&#224;i liệu n&#224;y l&#224; qu&#225; đầy đủ rồi. C&#225;c b&#224;i viết của m&#236;nh dựa một phần v&#224;o t&#224;i liệu n&#224;y v&#224; dựa v&#224;o kinh nghiệm khi m&#236;nh lập tr&#236;nh.</p>
<p>M&#236;nh đang l&#224;m đồ &#225;n tốt nghiệp n&#234;n mỗi ng&#224;y cố gắng viết một t&#237; cho c&#225;c bạn đọc nh&#233;. M&#224; đồ &#225;n của m&#236;nh l&#224;m với FPGA, chỉ d&#249;ng System Generator l&#224; li&#234;n quan đến Matlab th&#244;i :d.</p>
<p>Trong b&#224;i viết n&#224;y, m&#236;nh giới thiệu c&#225;c bạn c&#225;c t&#237;nh chất đặc trưng của c&#225;c điều khiển m&#224; c&#225;c bạn hay gặp.</p>
<p>Để hiện cửa sổ c&#225;c t&#237;nh chất <em><strong>Property Inspector</strong></em> của một điều khiển ch&#250;ng ta c&#243; 3 c&#225;ch sau:</p>
<ul>
<li>Nhấn đ&#250;p chuột v&#224;o mỗi điều khiển. </li>
<li>Chọn điều khiển rồi v&#224;o menu View, chọn <strong><em>Property Inspector.</em></strong> </li>
<li>Chọn điều khiển rồi nhấn v&#224;o biểu tượng <strong><em>Property Inspector,</em> </strong>gần chỗ M-file editor. </li>
</ul>
<p>Khi đ&#243;, cửa sổ <strong><em>Property Inspector</em></strong> sẽ hiện ra. Khi nhấn v&#224;o c&#225;c điều khiển kh&#225;c th&#236; cửa sổ n&#224;y sẽ hiện th&#244;ng tin tương ứng cho điều khiển đ&#243;.</p>
<p>Một v&#224;i t&#237;nh chất chung của c&#225;c điều khiển m&#224; c&#225;c bạn n&#234;n ch&#250; &#253;:</p>
<table border="3" cellspacing="0" cellpadding="2" width="557">
<tbody>
<tr>
<td valign="top" width="88">T&#237;nh chất (property)</td>
<td valign="top" width="188">Gi&#225; trị (value)</td>
<td valign="top" width="275">Mi&#234;u tả</td>
</tr>
<tr>
<td valign="top" width="92">Enable</td>
<td valign="top" width="187">on, inactive, off          <br />Mặc định l&#224;: on</td>
<td valign="top" width="272">X&#225;c định khi n&#224;o th&#236; điều khiển hiển thị l&#234;n giao diện.          <br />Đặt = off, th&#236; điều khiển sẽ kh&#244;ng xuất hiện.</td>
</tr>
<tr>
<td valign="top" width="96">Max</td>
<td valign="top" width="185">V&#244; hướng.          <br />Mặc định l&#224; 1.</td>
<td valign="top" width="270">Gi&#225; trị lớn nhất, t&#249;y thuộc v&#224;o từng điều khiển.</td>
</tr>
<tr>
<td valign="top" width="100">Min</td>
<td valign="top" width="184">V&#244; hướng.          <br />Mặc định l&#224; 0</td>
<td valign="top" width="268">Gi&#225; trị nhỏ nhất, t&#249;y thuộc v&#224;o từng điều khiển.</td>
</tr>
<tr>
<td valign="top" width="103">Position</td>
<td valign="top" width="183">Vector gồm 4 phần tử (left, bottom, width, height)</td>
<td valign="top" width="267">K&#237;ch thước của điều khiển v&#224; vị tr&#237; tương đối của n&#243; với điều khiển chứa n&#243;.</td>
</tr>
<tr>
<td valign="top" width="105">String</td>
<td valign="top" width="182">&#160;</td>
<td valign="top" width="266">&#160;</td>
</tr>
<tr>
<td valign="top" width="107">Units</td>
<td valign="top" width="182">&#160;</td>
<td valign="top" width="265">Đơn vị đo lường d&#249;ng trong x&#225;c định vị tr&#237;.</td>
</tr>
<tr>
<td valign="top" width="108">Value</td>
<td valign="top" width="181">V&#244; hướng hoặc vector</td>
<td valign="top" width="266">Gi&#225; trị của component, t&#249;y thuộc v&#224;o từng component.</td>
</tr>
</tbody>
</table>
<p>Ngo&#224;i ra, thuộc t&#237;nh cực k&#236; quan trọng m&#224; c&#225;c bạn phải thay ngay từ đ&#226;u l&#224;: <strong><em>tag</em></strong>. Thuộc t&#237;nh n&#224;y giống thuộc t&#237;nh Caption m&#224; c&#225;c bạn gặp trong Visual Basic, ch&#237;nh l&#224; t&#234;n để ph&#226;n biệt giữa c&#225;c điều khiển. Mỗi điều khiển chỉ c&#243; một t&#234;n duy nhất. c&#225;c bạn n&#234;n qui định cho dễ nhớ nh&#233;. M&#236;nh nghĩ l&#224; n&#234;n kết hợp giữa t&#234;n của loại điều khiển v&#224; mục đ&#237;ch của điều khiển đ&#243;.</p>
<p>V&#237; dụ: một &#244; nhập dữ liệu gi&#225; trị tiền, thuộc Edit Box n&#234;n m&#236;nh đặt tag l&#224;: editMoney.</p>
<p>B&#226;y giờ đi v&#224;o từng điều khiển cụ thể.</p>
<p><font color="#0000ff">1. Push Button</font></p>
<p>Thay đổi chữ hiển thị (label) hiển thị tr&#234;n điều khiển n&#224;y bằng c&#225;ch thay đổi thuộc t&#237;nh <strong><em>String</em></strong>. Chữ hiển thị tr&#234;n Button chỉ c&#243; thể l&#224; 1 d&#242;ng, n&#234;n nếu bạn g&#245; nhiều d&#242;ng trong thuộc t&#237;nh String th&#236; chỉ hiển thị d&#242;ng đầu ti&#234;n. Nếu số k&#237; tự d&#242;ng đầu ti&#234;n lớn hơn bề rộng c&#243; thể hiển thị chữ được của bề mặt Button th&#236; Matlab tự r&#250;t ngắn String đ&#243; với dấu 3 chấm (...).</p>
<p>Thay đổi vị tr&#237;&#160; của PushButton = thay đổi thuộc t&#237;nh Position. C&#243; thể code trong MFile (thay đổi trong qu&#225; tr&#236;nh thực thi) hoặc thay đổi ngay l&#250;c thiết kế(gắp thả).</p>
<p>Để th&#234;m một ảnh v&#224;o PushButton th&#236; ch&#250;ng ta g&#225;n thuộc t&#237;nh CData bằng một ma trận <strong><em>m x n x 3</em></strong> của gi&#225; trị RGB. Thực hiện trong MFile ở h&#224;m Open của điều khiển để ngay khi chạy chương tr&#236;nh đ&#227; load ảnh n&#224;y v&#224;o rồi.</p>
<blockquote><p>img = rand(16,64.3);</p>
<p>set(handles.pushbutton1, 'CData',img);</p>
</blockquote>
<p>Ch&#250; &#253;: C&#243; thể tạo biểu tượng ri&#234;ng của bạn cho c&#225;c nut Push Button bằng c&#225;ch d&#249;ng Icon Editor, sau đ&#243; d&#249;ng h&#224;m ind2rgb để chuyển sang ảnh g&#225;n v&#224;o thuộc t&#237;nh CData.</p>
<p>C&#225;c sự kiện xảy ra khi nhấn Push Button được viết trong c&#225;c h&#224;m ngắt như Callback,..</p>
<p><font color="#0000ff">2. Slider (Thanh trượt)</font></p>
<p>Thay đổi khoảng gi&#225; trị của Slider bằng c&#225;ch thay đổi thuộc t&#237;nh Min v&#224; Max. Tất nhi&#234;n Min &lt; Max.</p>
<p>Gi&#225; trị hiện tại của Slider được = gi&#225; trị của thuộc t&#237;nh <strong><em>Value</em></strong>. N&#234;n khi set hoặc get th&#236; ta lấy gi&#225; trị n&#224;y.</p>
<p>Khi click v&#224;o 2 c&#225;i mũi t&#234;n 2 b&#234;n th&#236; thanh trượt sẽ trượt tương ứng về 2 ph&#237;a theo một bước n&#224;o đ&#243;. Thay đổi thuộc t&#237;nh SliderStep = [min_step, max_step]. min_step l&#224; gi&#225; trị bước nhảy khi click v&#224;o 2 mũi t&#234;n. C&#242;n Max_step l&#224; gi&#225; trị khi m&#224; click v&#224;o trong v&#249;ng trượt.</p>
<p><font color="#0000ff">3. Radio Button</font></p>
<p>Để biết n&#250;t Radio c&#243; được đ&#225;nh dấu hay l&#224; kh&#244;ng th&#236; ch&#250;ng ta xem thuộc t&#237;nh Value của n&#243;.</p>
<p>Value = 1 th&#236; check</p>
<p>Value = 0 th&#236; l&#224; k check</p>
<p><font color="#0000ff">4. Check Box</font></p>
<p>Check Box th&#236; thuộc t&#237;nh quan trọng cũng tương tự như Radio Button.</p>
<p><font color="#0000ff">5. Edit Text</font></p>
<p>Thuộc t&#237;nh quan trọng l&#224; Stri<br />
ng, ch&#237;nh l&#224; x&#226;u k&#237; tự hiển thị tr&#234;n Edit Text. Ch&#250; &#253;: để hiển thị như &#253; muốn th&#236; c&#225;c bạn cần phải xem kĩ th&#234;m c&#225;c h&#224;m xử l&#253; string nh&#233;.</p>
<p>Để hiển thị Edit Text dạng Multi-line th&#236; cần thay đổi thuộc t&#237;nh Max, Min. Max&gt; Min. V&#237; dụ: Max = 2, Min = 0 sẽ hiển thị 2 d&#242;ng đ&#243;.</p>
<p><font color="#0000ff">6. Static Text</font></p>
<p>Thằng n&#224;y tương tự như Edit Text.</p>
<p>7. Popup Menu</p>
<p>8. List Box</p>
<p>9. Toggle Button</p>
<p>Hic hic, viết d&#224;i qu&#225; mỏi tay hật. Rảnh rỗi viết cập nhật th&#234;m v&#224;i c&#225;i, c&#242;n kh&#244;ng th&#236; c&#225;c bạn thực h&#224;nh trong c&#225;c b&#224;i kh&#225;c nh&#233; <img alt="Big Grin" src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/4.gif" /></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=63&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/lap-trinh-c-cho-vi-dieu-khien/' rel='bookmark' title='Lập trình C cho vi điều khiển'>Lập trình C cho vi điều khiển</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/so-sanh-cac-bo-dieu-khien-toc-do-dong-co-dc/' rel='bookmark' title='So sánh các bộ điều khiển tốc độ động cơ DC'>So sánh các bộ điều khiển tốc độ động cơ DC</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Cách học Matlab hiệu quả</title>
		<link>http://www.ngohaibac.net/effective-way-to-learn-matlab-2/</link>
		<comments>http://www.ngohaibac.net/effective-way-to-learn-matlab-2/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 06:11:13 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/effective-way-to-learn-matlab-2/</guid>
		<description><![CDATA[Chào các bạn. Mình có ý định viết một vài Tutorial để học Matlab nhưng qua tìm hiểu và search thì có một số link rất là hay. Do đó, mình chỉ xin trình bày một số nguồn tham khảo dành cho các bạn mà mình thấy là hay. 1. Matlab Help Cái này thì [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
<li><a href='http://www.ngohaibac.net/cach-sap-xep-cong-viec-va-lam-viec-hieu-qua/' rel='bookmark' title='Cách sắp xếp công việc và làm việc hiệu quả'>Cách sắp xếp công việc và làm việc hiệu quả</a></li>
<li><a href='http://www.ngohaibac.net/get-data-from-scope-and-display-in-plot/' rel='bookmark' title='Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị'>Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Chào các bạn.</p>
<p>Mình có ý định viết một vài Tutorial để học Matlab nhưng qua tìm hiểu và search thì có một số link rất là hay. Do đó, mình chỉ xin trình bày một số nguồn tham khảo dành cho các bạn mà mình thấy là hay.</p>
<h5>1. Matlab Help</h5>
<p>Cái này thì không thể thiếu với các bạn học Matlab. Bạn có thể tra các lệnh trong cửa sổ Command, hoặc nhấn F1 để vào Help Browse.</p>
<p>Help do của chương trình Matlab đầy đủ luôn. Từng Toolbox trong tab Content, đều có hướng dẫn quá đầy đủ từ Getting Started đến các Functions, các examples. Ngoài ra, các bạn không muốn đọc trực tiếp ở đó thì có file .pdf ở phần Printed Documentation để các bạn in ra đọc.</p>
<p>Yêu cầu tất nhiên là bạn phải có tiếng Anh kĩ thuật tốt tốt tí. Nói chung là đừng lười, cứ đọc đi, cuối cùng sẽ hiểu hehe. Cố gắng kiên trì tìm hiểu cấu trúc của từng Toolbox trong Help để khi mình cần xem vấn đề gì thì mở ra mà xem.Có thể dùng tab Index hoặc Search để tìm vấn đề mà mình đang cần tìm.</p>
<p>Nếu mà lười cài vì PC nhà mình yếu thì có thể xem trực tuyến tại: <a href="http://www.mathworks.com/access/helpdesk/help/techdoc/" target="_blank">mathworks.com</a>.</p>
<p>Mình học Matlab chủ yếu từ nguồn này.</p>
<h5>2. Một số link về Tutorial Matlab.</h5>
<p><a href="http://edu.levitas.net/Tutorials/Matlab/">http://edu.levitas.net/Tutorials/Matlab/</a> (Trang này có một số TUT về Matlab và Simulink ).</p>
<p><a href="http://www.blinkdagger.com/matlab">http://www.blinkdagger.com/matlab</a> (Trang của một bạn tên Vietnam: <a href="http://www.blinkdagger.com/author/misterturtie/"><em>Quan Quach</em></a><em>,</em> có rất là nhiều TUT về Matlab).</p>
<p><a href="http://dientuvietnam.net/forums/forumdisplay.php?f=98">Box Matlab, Simulink,.. trong Điện tử Việt Nam</a></p>
<p>Một số link hướng dẫn về lập trình GUI của mình ở dưới bài viết.</p>
<p>( Còn bổ sung sau )</p>
<h5>3. Tài liệu tiếng Việt</h5>
<p>Nguyễn Phùng Quang, <strong><em>Matlab &amp; Simulink dành cho kĩ sư điều khiển tự động</em></strong>, NXB BKHN</p>
<p>Tài liệu này ban đầu mở cho các bạn một số khái niệm về Matlab, có điều là bạn sẽ đặt câu hỏi là tại sao thầy lại dùng các hàm đó, ... ?</p>
<p>Vì thế, bạn nên kết hợp với Help của Matlab để hiểu, như thế mới học thành thạo và hiểu mấu chốt vấn đề. Tài liệu này cũng chỉ đi sơ bộ một số phần của Matlab, mà tập trung vào phần truyền động với các động cơ một chiều và xoay chiều.</p>
<p>Chúc các bạn thành công.</p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=42&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/make-exe-file-in-matlab/' rel='bookmark' title='Tạo file .exe trong Matlab dùng Matlab Compiler'>Tạo file .exe trong Matlab dùng Matlab Compiler</a></li>
<li><a href='http://www.ngohaibac.net/cach-sap-xep-cong-viec-va-lam-viec-hieu-qua/' rel='bookmark' title='Cách sắp xếp công việc và làm việc hiệu quả'>Cách sắp xếp công việc và làm việc hiệu quả</a></li>
<li><a href='http://www.ngohaibac.net/get-data-from-scope-and-display-in-plot/' rel='bookmark' title='Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị'>Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/effective-way-to-learn-matlab-2/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Lập trình giao diện GUI trong Matlab (Phần 1)</title>
		<link>http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/</link>
		<comments>http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 20:20:34 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Download tài liệu]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/</guid>
		<description><![CDATA[M&#236;nh viết b&#224;i n&#224;y để tổng hợp lại c&#225;c hướng dẫn về thiết kế giao diện GUI trong Matlab để c&#225;c bạn dễ d&#224;ng thực hiện. Phần mềm: Matlab R2007a B&#224;i đầu ti&#234;n m&#236;nh sẽ giới thiệu c&#225;c bạn giao diện GUI. 1. Mở phần mềm Matlab, g&#245; lệnh sau v&#224;o cửa sổ Command &#62;&#62; [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/' rel='bookmark' title='C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab'>C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab</a></li>
<li><a href='http://www.ngohaibac.net/gui-callback-overview/' rel='bookmark' title='Tổng quan về hàm Callback trong lập trình GUI'>Tổng quan về hàm Callback trong lập trình GUI</a></li>
<li><a href='http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/' rel='bookmark' title='Tạo h&#236;nh nền cho giao diện GUI'>Tạo h&#236;nh nền cho giao diện GUI</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>M&#236;nh viết b&#224;i n&#224;y để tổng hợp lại c&#225;c hướng dẫn về thiết kế giao diện GUI trong Matlab để c&#225;c bạn dễ d&#224;ng thực hiện.</p>
<p>Phần mềm: Matlab R2007a</p>
<p>B&#224;i đầu ti&#234;n m&#236;nh sẽ giới thiệu c&#225;c bạn giao diện GUI.</p>
<p>1. Mở phần mềm Matlab, g&#245; lệnh sau v&#224;o cửa sổ Command</p>
<blockquote><p>&gt;&gt; guide</p>
</blockquote>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_001.gif" rel="lightbox" target="_blank"><img alt="" src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_001.gif" /></a></p>
<p>Trong cửa sổ GUIDE Quick Start c&#243; nhiều lựa chọn theo một trong c&#225;c khu&#226;n mẫu sau:</p>
<p><em>Create New GUI</em>: Tạo một hộp thoại GUI mới theo một trong c&#225;c loại sau</p>
<ul>
<li><em>Blank GUI (Default):</em> Hộp thoại GUI trống kh&#244;ng c&#243; một điều khiển uicontrol n&#224;o cả. </li>
<li><em>GUI with Uicontrols:</em> Hộp thoại GUI với một v&#224;i uicontrol như button, ... Chương tr&#236;nh c&#243; thể chạy ngay. </li>
<li><em>GUI with Axes and Menu:</em> Hộp thoại GUI với một uicontrol axes v&#224; button, c&#225;c menu để hiển thị đồ thị. </li>
<li><em>Modal Question Dialog:</em> Hộp thoại đặt c&#226;u hỏi Yes, No.</span> </li>
</ul>
<p><em>Open Existing GUI: </em>mở một project c&#243; sẵn.</font></p>
<p>Trong hướng dẫn n&#224;y, c&#225;c bạn tạo một project mới n&#234;n sẽ chọn <em>Blank GUI</em></p>
<p><font color="#0000ff">2. Cửa sổ GUI hiện ra</font></p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_TUT_0010.gif" rel="lightbox" target="_blank"><span style="font-size: x-small"><font size="2"><img alt="" src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_TUT_0010.gif" width="555" height="381" /></font></span></a><span style="font-size: x-small"><font size="2"> </font></span></p>
<p>Giao diện rất giống với c&#225;c chương tr&#236;nh lập tr&#236;nh giao diện như Visual Basic, Visual C++, ... C&#225;c bạn di chuột qua c&#225;c biểu tượng ở b&#234;n tr&#225;i sẽ thấy t&#234;n của c&#225;c điều khiển. Xin n&#243;i qua một v&#224;i điều khiển hay d&#249;ng:</p>
<ul>
<li>Push Button: giống như n&#250;t Command Button trong VB. L&#224; c&#225;c n&#250;t bấm như n&#250;t OK, Cancel m&#224; ta vẫn bấm. </li>
<li>Slider : Thanh trượt c&#243; một con trượt chạy tr&#234;n đ&#243;. </li>
<li>Radio Button : N&#250;t nhỏ h&#236;nh tr&#242;n để chọn lựa </li>
<li>Check Box </li>
<li>Edit Text </li>
<li>Static Text </li>
<li>Pop-up Menu </li>
<li>List Box </li>
<li>Axes </li>
<li>Panel </li>
<li>Button Group </li>
<li>ActiveX Control </li>
<li>Toggle Button </li>
</ul>
<p>C&#225;c bạn h&#227;y thử gắp thả v&#224;i điều khiển v&#224;o trong giao diện b&#234;n phải xem h&#236;nh dạng thế n&#224;o ?? H&#236;nh dạng ra sao nhỉ ??</p>
<p>C&#242;n menu th&#236; quan trọng nhất l&#224; menu Tools c&#243;:</p>
<ul>
<li>Run (Ctr + T) : nhấn v&#224;o để chạy chương tr&#236;nh m&#224; ta đ&#227; viết. C&#243; lỗi l&#224; hiện ra ng&#224;y <img alt="Big Grin" src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/4.gif" /> </li>
<li>Align Object: d&#249;ng để l&#224;m cho c&#225;c điều khiển sắp xếp gọn đẹp theo &#253; m&#236;nh như c&#249;ng căn lề b&#234;n tr&#225;i, ... </li>
<li>Grid and Rulers : d&#249;ng để cấu h&#236;nh về lưới trong giao diện v&#236; n&#243; sẽ coi giao diện như một ma trận c&#225;c &#244; vu&#244;ng nhỏ, ta sẽ thay đổi gi&#225; trị n&#224;y để cho c&#225;c điều khiển c&#243; thể thả ở đ&#226;u t&#249;y &#253; cho đẹp. </li>
<li>Menu Editor : tr&#236;nh n&#224;y để tạo menu cho điều khiển </li>
<li>Tab Order Editor : sắp xếp Tab order l&#224; thứ tự khi ta nhấn ph&#237;m Tab </li>
<li>Gui Options : lựa chọn cho giao diện GUI. </li>
</ul>
<p>C&#225;c bạn n&#234;n v&#224;o menu Help để xem hướng dẫn th&#234;m trong Help.</p>
<p>C&#225;c bạn save dưới t&#234;n: TUT01, khi đ&#243; đồng thời xuất hiện cửa sổ Editor v&#224; đang mở file TUT01.m của bạn. Trong thư mục bạn save sẽ c&#243; 2 file l&#224;:</p>
<ul>
<li>TUT01.fig : file n&#224;y chứa giao diện của chương tr&#236;nh </li>
<li>TUT01.m : file chứa c&#225;c m&#227; thực thi cho chương tr&#236;nh như c&#225;c h&#224;m khởi tạo, c&#225;c h&#224;m callback,... (sẽ n&#243;i chi tiết v&#224;o b&#224;i kh&#225;c). </li>
</ul>
<p><span style="color: #0000ff">3. K&#233;o thả c&#225;c điều khiển</span></p>
<p>N&#243;i hơi nhiều n&#234;n c&#225;c bạn gh&#233;t rồi, n&#234;n h&#227;y l&#224;m một v&#237; dụ đơn giản cho vui c&#242;n học tiếp n&#224;o.</p>
<p>H&#227;y k&#233;o v&#224;o trong giao diện 2 edit box, 1 static box v&#224; 1 Push Button.</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_003.gif" rel="lightbox" target="_blank"><img alt="" src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_003.gif" /></a></p>
<p>Chương tr&#236;nh c&#243; chức năng khi nhấn v&#224;o n&#250;t bấm th&#236; kết quả của ph&#233;p t&#237;nh cộng giữa 2 số được g&#245; v&#224;o 2 &#244; sẽ hiện l&#234;n trong Static Text.</p>
<p><span style="color: #0000ff">4. Thay đổi c&#225;c thuộc t&#237;nh của c&#225;c điều khiển</span></p>
<p>Click đ&#250;p v&#224;o Edit Text b&#234;n tr&#225;i để xuất hiện cửa sổ c&#225;c thuộc t&#237;nh của điều khiển. C&#243; thể sắp xếp theo chức năng hoặc theo thứ tự A-Z của t&#234;n thuộc t&#237;nh bằng n&#250;t hiện ở g&#245; b&#234;n tr&#225;i.</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_004.gif" rel="lightbox" target="_blank"><img alt="" src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_004.gif" /></a></p>
<p>C&#225;c thuộc t&#237;nh n&#224;y c&#225;c bạn h&#227;y thử thay đổi xem n&#243; thế n&#224;o nhỉ ??</p>
<p>Thuộc t&#237;nh quan trọng của <em>Edit Box</em> bao gồm:</p>
<ul>
<li>Tag: đ&#226;y l&#224; thuộc t&#237;nh giống như Caption trong Visual Basic để đặt t&#234;n điều khiển. D&#249;ng t&#234;n n&#224;y c&#243; thể thao t&#225;c đến c&#225;c thuộc t&#237;nh của đối tượng. M&#236;nh đặt t&#234;n l&#224;: <em>editStr1</em>. </li>
<li>String : l&#224; x&#226;u k&#237; tự hiện l&#234;n <em>Edit Box</em>. C&#225;c bạn x&#243;a c&#225;i n&#224;y đi. </li>
</ul>
<p>Tương tự, thay đổi thuộc t&#237;nh tag của Edit Box thứ 2 th&#224;nh <em>editStr2</em>. <em>Static Box</em> cũng tương tự th&#224;nh staticStr3.</p>
<p>Push Button: thuộc t&#237;nh tag = buttonCalculate, string = calculate</p>
<p><span style="color: #0000ff">5. Viết lệnh cho chương tr&#236;nh</span></p>
<p>Chương tr&#236;nh c&#243; t&#225;c dụng khi nhấn v&#224;o n&#250;t Push Button sẽ hiện l&#234;n kết quả ở Static Box. V&#236; thế n&#234;n sẽ phải viết v&#224;o h&#224;m n&#224;o m&#224; khi nhấn v&#224;o Push Button sẽ gọi. Ch&#237;nh l&#224; h&#224;m Callback. Điều khiển n&#224;o cũng c&#243; h&#224;m callback, như h&#224;m ngắt trong vi điều khiển vậy <img src='http://www.ngohaibac.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Click chuột phải v&#224;o n&#250;t Calculate chọn Callback. Trong n&#224;y c&#242;n một số h&#224;m nữa sẽ t&#237;nh sau.</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_006.gif" rel="lightbox" target="_blank"><img alt=""<br />
src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_006.gif" /></a></p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_007.gif" rel="lightbox" target="_blank"><img alt="" src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_007.gif" /></a></p>
<p>Nh&#236;n v&#224;o định nghĩa của h&#224;m trong Editor bạn sẽ thấy l&#224;: h&#224;m n&#224;y được thực hiện khi nhấn v&#224;o n&#250;t buttonCalculate.</p>
<p>H&#224;m c&#243; một số tham số:</p>
<ul>
<li>hObject : handle của điều khiển buttonCalculate </li>
<li>eventdata </li>
<li>handles : l&#224; một cấu tr&#250;c chứa tất cả c&#225;c điều khiển v&#224; dữ liệu người d&#249;ng. D&#249;ng c&#225;i n&#224;y để truy suất c&#225;c điều khiển kh&#225;c. </li>
</ul>
<p>Qua thuộc t&#237;nh tag của c&#225;c điều khiển ta sẽ truy suất đến thuộc t&#237;nh string của c&#225;c điều khiển editStr1, editStr2,editStr3 bằng lệnh <em>get</em> v&#224; <em>set</em>.</p>
<blockquote><p>get(handles.tag_dieu_khien, 'ten thuoc tinh');</p>
<p>set(handles.tag_dieu_khien, 'ten_thuoc_tinh', gia_tri);</p>
</blockquote>
<p>v&#224; h&#224;m quan trọng nữa biến từ string sang số l&#224; h&#224;m: str2num v&#224; num2str để biến trở lại.</p>
<p>Vậy ch&#250;ng ta sẽ viết h&#224;m như sau:</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_009.gif" rel="lightbox" target="_blank"><img alt="" src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_009.gif" /></a></p>
<p>Nhấn n&#250;t Run kiểm tra kết quả xem n&#224;o:</p>
<p><a href="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_008.gif" rel="lightbox" target="_blank"><img alt="" src="http://i280.photobucket.com/albums/kk189/ngohaibac_dot_net/Matlab_TUT/Maltab_tutorial_008.gif" /></a></p>
<h3><font size="2">Tham khảo</font></h3>
<p><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">Ng&#244; Hải Bắc, </font></span></span><a href="http://dientuvietnam.net/forums/showthread.php?t=594" target="_blank"><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">Lập tr&#236;nh GUI trong Matlab</font></span></span></a><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">, </font></span></span><a href="http://www.dientuvietnam.net"><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">www.dientuvietnam.net</font></span></span></a><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">, 2005</font></span></span></p>
<p><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">Ng&#244; Hải Bắc, </font></span></span><a href="http://www.picvietnam.com/forum/showthread.php?t=752"><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">Giao tiếp RS232 tr&#234;n PC qua Matlab</font></span></span></a><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">, </font></span></span><a href="http://www.picvietnam.com"><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">www.picvietnam.com</font></span></span></a><span style="font-size: x-small"><span style="font-size: x-small"><font size="2">, 2006</font></span></span></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=39&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/cac-tinh-chat-cua-cac-dieu-khien-trong-gui-matlab/' rel='bookmark' title='C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab'>C&#225;c t&#237;nh chất của c&#225;c điều khiển trong GUIDE Matlab</a></li>
<li><a href='http://www.ngohaibac.net/gui-callback-overview/' rel='bookmark' title='Tổng quan về hàm Callback trong lập trình GUI'>Tổng quan về hàm Callback trong lập trình GUI</a></li>
<li><a href='http://www.ngohaibac.net/tao-hinh-nen-cho-giao-dien-gui/' rel='bookmark' title='Tạo h&#236;nh nền cho giao diện GUI'>Tạo h&#236;nh nền cho giao diện GUI</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/feed/</wfw:commentRss>
		<slash:comments>194</slash:comments>
		</item>
		<item>
		<title>Thủ thuật Matlab - Lấy lại số liệu trên Scope và hiển thị trên đồ thị</title>
		<link>http://www.ngohaibac.net/get-data-from-scope-and-display-in-plot/</link>
		<comments>http://www.ngohaibac.net/get-data-from-scope-and-display-in-plot/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 15:03:12 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>

		<guid isPermaLink="false">http://blog.ngohaibac.net/get-data-from-scope-and-display-in-plot/</guid>
		<description><![CDATA[Chắc hẳn các bạn làm việc với Matlab - Simulink đã làm quen với khối Scope trong thư viện Sinks, khối này khi hiển thị mô phỏng với thời gian tương đối dài thì chúng ta khó lòng thu lại được đường đặc tính của nó. Khi chụp thẳng hình này thì sẽ toàn màu [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/' rel='bookmark' title='Hiển thị Led 7 thanh trên GUI Matlab'>Hiển thị Led 7 thanh trên GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/phan-tich-thuat-toan-thuc-hien-lenh-dieu-khien-pc-qua-rs232/' rel='bookmark' title='Phan tich thuat toan: thuc hien lenh dieu khien tu PC qua RS232'>Phan tich thuat toan: thuc hien lenh dieu khien tu PC qua RS232</a></li>
<li><a href='http://www.ngohaibac.net/matlab001-ki-thuat-lap-trinh-matlab-can-ban/' rel='bookmark' title='Matlab001: Kỹ thuật lập trình Matlab căn bản'>Matlab001: Kỹ thuật lập trình Matlab căn bản</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Chắc hẳn các bạn làm việc với Matlab - Simulink đã làm quen với khối Scope trong thư viện Sinks, khối này khi hiển thị mô phỏng với thời gian tương đối dài thì chúng ta khó lòng thu lại được đường đặc tính của nó. Khi chụp thẳng hình này thì sẽ toàn màu đen, khi đem in làm báo cáo,.. thì rất khó nhìn. Vì vậy nên tôi làm như sau.</p>
<p>Với các mô hình Simulink đó, bạn kích đúp chuột vào khối Scope.</p>
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/PVN_0059.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/PVN_0059.gif" alt="" /></a></p>
<p><strong><em>Hình 1:Chọn Parameter trên cửa sổ Scope.</em></strong></p>
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/PVN_0060.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/PVN_0060.gif" alt="" /></a></p>
<p><em><strong>Hình 2: chọn tab Data history, Chọn Save data to workspace, chọn kiểu <strong>structure with time</strong> vì cần có biến time.</strong></em></p>
<p>Trong này có nhiều lựa chọn cho biến ở trong khung Format nhưng mình chọn kiểu Structure để dễ thao tác.</p>
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/PVN_0061.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/PVN_0061.gif" alt="" /></a></p>
<p><strong><em>Hình 3: Sau khi chạy mô phỏng xong bạn sẽ thấy cửa sổ Workspace có biến ScopeData</em></strong></p>
<p>Như vậy biến ScopeData là một structure nên dùng toán tử truy nhập (.) để truy nhập vào từng phần tử của nó. Bạn thử dùng lệnh sau để biết tên của các thành phần của biến này:</p>
<blockquote><p>&gt;&gt;ScopeData</p></blockquote>
<p>Bạn gõ lệnh sau để vẽ :</p>
<blockquote>
<pre>&gt;&gt;figure(1);
&gt;&gt;plot(ScopeData.time,ScopeData.signals.values);
&gt;&gt;grid on;</pre>
</blockquote>
<p>Lưu ý, với phiên bản Matlab R009b cần đổi lệnh plot thành bên dưới. Cảm ơn em <strong>trungkstn</strong> đã góp ý cho anh <img src='http://www.ngohaibac.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre>plot(ScopeData.time,ScopeData.signals.values(:));</pre>
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/PVN_0062.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/PVN_0062.gif" alt="" /></a></p>
<p><strong><em>Hình 4: Cửa sổ figure 1 hiện ra, kích vào pictools trên thanh công cụ.</em></strong></p>
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/PVN_0063.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/PVN_0063.gif" alt="" /></a></p>
<p>Khi cái scope của bạn có nhiều hình trong đó thì mà bạn muốn vẽ từng hình thì bạn làm như ví dụ sau. Mình có 2 hình trong một scope:</p>
<blockquote>
<pre><strong>%% Plot speed</strong>
figure(1);
x = out.time;
y = out.signals(1).values;
plot(x,y,'k-','LineWidth',2);
title(' Motor speed [Rad/s]','FontSize',12);
xlabel('Time [s]','FontSize', 12);
grid on;

<strong>%% Plot torque</strong>
figure(2);
x = out.time;
y = out.signals(2).values;
plot(x,y,'k-','LineWidth',2);
title('Amature Current [A]','FontSize',12);
xlabel('Time [s]','FontSize', 12);
grid on;</pre>
</blockquote>
<p><strong><em>Hình 5: Các công cụ hiện ra, bạn có thể xào nấu cái plot của mình theo ý muốn rùi nhé.</em></strong></p>
<p><strong>Tham khảo</strong></p>
<p>Ngô Hải Bắc, <strong> </strong><a href="http://www.dientuvietnam.net/forums/showthread.php?t=4064">Matlab - các thủ thuật nhỏ, đơn giản nhưng hiệu quả,</a> <a href="http://www.dientuvietnam.net">www.dientuvietnam.net</a>, 2006</p>
<p>Các bạn có ý kiến gì hoặc thắc mắc gì về Matlab xin cứ nêu câu hỏi nhé. Mình rảnh sẽ trả lời.</p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=28&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/hien-thi-led-7-thanh-tren-gui-matlab/' rel='bookmark' title='Hiển thị Led 7 thanh trên GUI Matlab'>Hiển thị Led 7 thanh trên GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/phan-tich-thuat-toan-thuc-hien-lenh-dieu-khien-pc-qua-rs232/' rel='bookmark' title='Phan tich thuat toan: thuc hien lenh dieu khien tu PC qua RS232'>Phan tich thuat toan: thuc hien lenh dieu khien tu PC qua RS232</a></li>
<li><a href='http://www.ngohaibac.net/matlab001-ki-thuat-lap-trinh-matlab-can-ban/' rel='bookmark' title='Matlab001: Kỹ thuật lập trình Matlab căn bản'>Matlab001: Kỹ thuật lập trình Matlab căn bản</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/get-data-from-scope-and-display-in-plot/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>Tạo file .exe trong Matlab dùng Matlab Compiler</title>
		<link>http://www.ngohaibac.net/make-exe-file-in-matlab/</link>
		<comments>http://www.ngohaibac.net/make-exe-file-in-matlab/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 04:44:56 +0000</pubDate>
		<dc:creator>ngohaibac</dc:creator>
				<category><![CDATA[Matlab]]></category>

		<guid isPermaLink="false">http://blog.ngohaibac.net/make-exe-file-in-matlab/</guid>
		<description><![CDATA[Có nhiều bạn khá băn khoăn về việc dịch một ứng dụng trong Matlab ra file .exe để chạy độc lập trên các máy không cài Matlab đúng không ?? Hay là cách để đóng gói sản phẩm của mình thì nên làm thế nào ? Để có thể dịch ra file .exe yêu cầu [...]


Related posts:<ol><li><a href='http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/' rel='bookmark' title='Tạo file .exe cho giao diện GUI Matlab'>Tạo file .exe cho giao diện GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/matlab-tinh-toan-thoi-gian-chay-ung-dung-mot-ham/' rel='bookmark' title='Matlab - tính toán thời gian chạy ứng dụng, một hàm'>Matlab - tính toán thời gian chạy ứng dụng, một hàm</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p></p><p>Có nhiều bạn khá băn khoăn về việc dịch một ứng dụng trong Matlab ra file .exe để chạy độc lập trên các máy không cài Matlab đúng không ?? Hay là cách để đóng gói sản phẩm của mình thì nên làm thế nào ?</p>
<p>Để có thể dịch ra file .exe yêu cầu bạn phải có toolbox <strong>MATLAB® Compiler™</strong>. Các bạn có thể xem chi tiết về toolbox này và cách dùng nó <a href="http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/index.html?/access/helpdesk/help/toolbox/compiler/deploytool.html&amp;http://www.google.com.vn/search?hl=vi&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;hs=HqO&amp;q=deployment+tool+matlab&amp;btnG=T%C3%ACm+ki%E1%BA%BFm&amp;meta=">tại đây.</a> Mình nghĩ là nó hướng dẫn quá đầy đủ về Matlab Compiler, các bạn chịu khó đọc từ đầu đến cuối là được. Các bạn đã cài bộ Help cho Matlab có thể tìm Toolbox này trong phần Help (nhấn F1).</p>
<p>Trong bài viết này, mình xin giới thiệu cách tạo file .exe bằng <em>Deployment Tool</em>. Công cụ giao diện thân thiện, không phải gõ lệnh, chỉ gắp thả là được.</p>
<h1>Yêu cầu</h1>
<p>Matlab 7.0 trở lên (vì mình test từ 7.0 <img src="http://spaces.live.com/rte/emoticons/smile_teeth.gif" alt="smile_teeth" /> ).</p>
<h1>Bước 1: Chọn công cụ biên dịch C</h1>
<p>Note: Bước này chỉ cần thực hiện 1 lần duy nhất ban đầu, nếu muốn chọn công cụ biên dịch khác thì chạy lại bước này.</p>
<blockquote>
<pre><strong>&gt;&gt; mbuild -setup</strong> Please choose your compiler for building standalone MATLAB applications:   Would you like mbuild to locate installed compilers [y]/n? y  Select a compiler: [1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2007b\sys\lcc [2] Microsoft Visual C++ 2005 in C:\Program Files\Microsoft Visual Studio 8   [0] None   Compiler: 1  Please verify your choices:   Compiler: Lcc-win32 C 2.4.1 Location: C:\PROGRA~1\MATLAB\R2007b\sys\lcc   Are these correct?([y]/n): y  Trying to update options file: C:\Documents and Settings\Ngo Hai Bac\Application Data\MathWorks\MATLAB\R2007b\compopts.bat From template:              C:\PROGRA~1\MATLAB\R2007b\bin\win32\mbuildopts\lcccompp.bat   Done . . .   &gt;&gt;</pre>
</blockquote>
<p>Như các bạn thấy chúng ta chỉ cần chọn công cụ biên dịch C có sẵn của Matlab là được rồi (Lựa chọn 1).</p>
<h1>Bước 2: Chạy công cụ Development Tool</h1>
<p>Gõ lệnh:</p>
<blockquote>
<pre>&gt;&gt; deploytool</pre>
</blockquote>
<p>Khi đó, giao diện của chương trình Deployment Tool hiện ra:</p>
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/HB_0064.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/HB_0064.gif" alt="" width="300" height="220" /></a></p>
<p align="center"><strong><em>Hình 1: Giao diện chương trình Deployment Tool</em></strong></p>
<p align="left">Từ cửa sổ của chương trình các bạn có thể làm theo hướng dẫn của chương trình được rồi.</p>
<p align="left">Vào menu <em>File</em> chọn <em>New Deployment Project</em> hoặc kich vào icon trên thanh công cụ.</p>
<p align="left">
<p><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/HB_0065.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/HB_0065.gif" alt="" width="300" height="300" /></a></p>
<p align="center"><strong><em>Hình 2: New Deployment Tool</em></strong></p>
<p align="left">Từ đây các bạn có nhiều lựa chọn cho việc dịch project của bạn không những dịch ra file .exe mà còn nhiều loại file khác như tạo thư viện C, C++, thư viện để nhúng vào Excel, ... Nhưng ở đây mình chọn <strong><em>Standalone Application</em></strong> để tạo ứng dụng độc lập. Chọn nơi lưu project trong Location và nhấn OK.</p>
<p align="left"><a rel="lightbox" href="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab%20Simulink/HB_0066.gif"><img src="http://i36.photobucket.com/albums/e46/ngohaibac/Matlab Simulink/HB_0066.gif" alt="" width="300" height="265" /></a></p>
<p align="center"><strong><em>Hình 3: Cửa sổ Deployment Tool sau khi đã tạo mới Project</em></strong></p>
<p>Sau đó các bạn vào menu<strong> Project -&gt; Add file </strong>để thêm file của dự án các bạn vào. <strong>Lưu ý:</strong> có thể kích phải vào từng loại như Main Function, other files,.. và chọn Add File.</p>
<p><strong>Note: </strong>Phải thêm hết các file trong dự án mà bạn muốn dịch vào trong Project vừa tạo.</p>
<h1>Bước 3: Dịch chương trình</h1>
<p>Nếu muốn dịch thì các bạn chọn <strong>Tools -&gt; Build (Ctr + B)</strong> để dịch. Các bạn phải kiên nhẫn chờ với project lớn nhé.</p>
<p>Nếu muốn đóng gói sản phẩn thì chọn <strong>Tools-&gt; Package (Ctr + P)</strong> để dịch.</p>
<p><strong><em>Note: </em></strong>Thế là các bạn đã dịch xong rùi đó <img title="Big Grin" src="http://dientuvietnam.net/forums/images/smilies/biggrin.gif" border="0" alt="" />. Tuy nhiên để chạy dc trên máy khác chưa xong đâu. Các bạn cần phải copy file <strong>MCRInstaller.exe</strong> của phiên bản Matlab của bạn đang sử dụng cho vào cùng thư mục với file đóng gói vừa tạo ra. Khi mang sang máy khác thì chạy file .exe nó sẽ tự động cài MCR lần đầu. Còn lấn sau k phải cài nữa.</p>
<p>Để biết vị trí của MCRInstaller:</p>
<blockquote>
<pre style="width: 497px; height: 134px"><strong>&gt;&gt; mcrinstaller</strong> The WIN32 MCR Installer, version 7.7, is:     C:\Program Files\MATLAB\R2007b\toolbox\compiler\deploy\win32\MCRInstaller.exe  MCR installers for other platforms are located in:     C:\Program Files\MATLAB\R2007b\toolbox\compiler\deploy\&lt;ARCH&gt;   &lt;ARCH&gt; is the value of COMPUTER('arch') on the target machine.</pre>
</blockquote>
<p>Để biết version của MCR hiện tại gõ:</p>
<blockquote>
<pre>&gt;&gt;<strong> [mcrmajor,mcrminor]=mcrversion</strong>  mcrmajor =       7  mcrminor =       7</pre>
</blockquote>
<p><em>Chú ý:</em> Copy MCRInstaller cùng với thư mục các bạn để file package. Khi đó, chạy file package thì nó sẽ tự cài MCRInstaller.</p>
<p>Mình đã biên dịch và chạy thành công Project <strong>RS232 Communication</strong> chạy độc lập trên máy không cài Matlab.</p>
<h1>Tham khảo</h1>
<p>Bài viết được biên soạn lại trên cơ sở bài viết đã post ở các diễn đàn điện tử của mình để các bạn tham khảo dễ dàng hơn.</p>
<p>Ngô Hải Bắc, <strong><a href="http://dientuvietnam.net/forums/showpost.php?p=68900&amp;postcount=5">Tạo file .exe trong Matlab,</a> <a href="http://www.dientuvietnam.net">www.dientuvietnam.net</a></strong></p>
<p><strong>Ngô Hải Bắc, <a href="http://www.picvietnam.com/forum/showthread.php?t=752&amp;page=1">Giao tiếp RS232 trên PC qua Matlab</a>, <a href="http://www.picvietnam.com">www.picvietnam.com</a></strong></p>
<img src="http://www.ngohaibac.net/?ak_action=api_record_view&id=27&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.ngohaibac.net/tao-file-exe-cho-giao-dien-gui-matlab/' rel='bookmark' title='Tạo file .exe cho giao diện GUI Matlab'>Tạo file .exe cho giao diện GUI Matlab</a></li>
<li><a href='http://www.ngohaibac.net/lap-trinh-gui-trong-matlab-chap1/' rel='bookmark' title='Lập trình giao diện GUI trong Matlab (Phần 1)'>Lập trình giao diện GUI trong Matlab (Phần 1)</a></li>
<li><a href='http://www.ngohaibac.net/matlab-tinh-toan-thoi-gian-chay-ung-dung-mot-ham/' rel='bookmark' title='Matlab - tính toán thời gian chạy ứng dụng, một hàm'>Matlab - tính toán thời gian chạy ứng dụng, một hàm</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.ngohaibac.net/make-exe-file-in-matlab/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
	</channel>
</rss>

