<?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>Public presentation &#8211; Undocumented Matlab</title>
	<atom:link href="https://undocumentedmatlab.com/articles/category/public-presentation/feed" rel="self" type="application/rss+xml" />
	<link>https://undocumentedmatlab.com</link>
	<description>Professional Matlab consulting, development and training</description>
	<lastBuildDate>Sat, 05 Dec 2020 17:45:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>
	<item>
		<title>Advanced Matlab online webinars</title>
		<link>https://undocumentedmatlab.com/articles/advanced-matlab-online-webinars?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=advanced-matlab-online-webinars</link>
					<comments>https://undocumentedmatlab.com/articles/advanced-matlab-online-webinars#comments</comments>
		
		<dc:creator><![CDATA[Yair Altman]]></dc:creator>
		<pubDate>Thu, 07 Sep 2017 08:37:06 +0000</pubDate>
				<category><![CDATA[Public presentation]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[webinar]]></category>
		<guid isPermaLink="false">http://undocumentedmatlab.com/?p=7034</guid>

					<description><![CDATA[<p>Several live online webinars on advanced Matlab programming will be presented in September-October 2017. </p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/advanced-matlab-online-webinars">Advanced Matlab online webinars</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/online-web-based-matlab" rel="bookmark" title="Online (web-based) Matlab">Online (web-based) Matlab </a> <small>Matlab Online is a MathWorks product that enables running Matlab applications via a full-fledged web interface. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/simple-gui-tabs-for-advanced-matlab-trading-app" rel="bookmark" title="Simple GUI Tabs for Advanced Matlab Trading App">Simple GUI Tabs for Advanced Matlab Trading App </a> <small>A new File Exchange utility enables to easily design GUI tabs using Matlab's GUIDE...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/changes-in-the-online-doc-urls" rel="bookmark" title="Changes in the online doc URLs">Changes in the online doc URLs </a> <small>Matlab release R2012b has broken a vast number of links to its online documentation pages. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/advanced-jide-property-grids" rel="bookmark" title="Advanced JIDE Property Grids">Advanced JIDE Property Grids </a> <small>JIDE property grids can use complex cell renderer and editor components and can signal property change events asynchronously to Matlab callbacks...</small></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<p><span class="alignright"><img fetchpriority="high" decoding="async" alt="Advanced Matlab training webinars at the comfort of your desk" src="https://undocumentedmatlab.com/images/20140514_111953a_500x385.jpg" title="Advanced Matlab training webinars at the comfort of your desk" width="400" height="308"/></span> I <!-- will present -->have prepared the following <!-- live --> online webinars on advanced Matlab topics <!--
 in the upcoming weeks --> I  (click the webinar titles for a detailed description):<br />
<!-- 

<ul>
	

<li>Sep 25, 2017 (Mon) - <a target="_blank" href="/courses/Interactive_Matlab_GUI_Webinar.pdf">Interactive Matlab GUI</a> - $295 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=295&item_name=Interactive+Matlab+GUI+webinar" rel="nofollow" target="_blank">buy</a>)</li>


	

<li>Sep 26, 2017 (Tue) - <a target="_blank" href="/courses/Advanced_Matlab_GUI_Webinar.pdf">Advanced Matlab GUI</a> - $295 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=295&item_name=Advanced+Matlab+GUI+webinar" rel="nofollow" target="_blank">buy</a>)</li>


	

<li>Sep 27, 2017 (Wed) - <a target="_blank" href="/courses/Expert_Matlab_GUI_Webinar.pdf">Expert Matlab GUI</a> - $295 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=295&item_name=Expert+Matlab+GUI+webinar" rel="nofollow" target="_blank">buy</a>)
 &nbsp;&nbsp;&nbsp; ==> or buy all 3 Matlab GUI webinars for only $795 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=795&item_name=Matlab+GUI+webinars" rel="nofollow" target="_blank">buy</a>)
</li>


	

<li>Oct 2, 2017 (Mon) - <a target="_blank" href="/courses/Professional_Reports_in_Matlab_Webinar.pdf">Creating professional reports in Matlab</a> - $295 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=295&item_name=Matlab+reports+webinar" rel="nofollow" target="_blank">buy</a>)</li>


	

<li>Oct 3, 2017 (Tue) - <a target="_blank" href="/courses/Object_Oriented_Matlab_Webinar.pdf">Object-oriented Matlab programming</a> - $295 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=295&item_name=Matlab+OOP+webinar" rel="nofollow" target="_blank">buy</a>)
 &nbsp;&nbsp;&nbsp; ==> or buy both Matlab webinars (reports &amp; OOP) for only $495 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=495&item_name=Matlab+programming+webinars" rel="nofollow" target="_blank">buy</a>)
</li>


	

<li>Oct 9, 2017 (Mon) - <a target="_blank" href="/courses/Matlab_Performance_Tuning_1_Webinar.pdf">Matlab performance speedup part 1</a> - $295 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=295&item_name=Matlab+performance+1+webinar" rel="nofollow" target="_blank">buy</a>)</li>


	

<li>Oct 10, 2017 (Tue) - <a target="_blank" href="/courses/Matlab_Performance_Tuning_2_Webinar.pdf">Matlab performance speedup part 2</a> - $295 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=295&item_name=Matlab+performance+2+webinar" rel="nofollow" target="_blank">buy</a>)
 &nbsp;&nbsp;&nbsp; ==> or buy both Matlab performance tuning webinars for only $495 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&currency_code=USD&business=octahedron.ltd@gmail.com&quantity=1&amount=495&item_name=Matlab+performance+webinars" rel="nofollow" target="_blank">buy</a>)</li>


</ul>


These live webinars will be 3.5 hours long, starting at 10am EDT (7am PDT, 3pm UK, 4pm CET, 7:30pm IST, <a href="https://www.google.com/search?q=9am+edt+to+my+time" rel="nofollow" target="_blank">time in your local timezone</a>), with a short break in the middle (<i>note the change in time</i>).
The webinars will all be highly technical, concise and to the point, making very effective use of your time. The presentations content will be based on onsite training courses that I presented at multiple client locations (<a href="/training#onsite" target="_blank">details</a>).
This will be the first time that I host public live webinars. Depending on their success I may offer additional webinars in the future, but there are no specific plans for this at the moment.
A recording of the webinars will be available for anyone who cannot join the live events.
--></p>
<ul>
<li><a target="_blank" href="/courses/Interactive_Matlab_GUI_Webinar.pdf">Interactive Matlab GUI</a> (3:26 hours) &#8211; $195 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=195&#038;item_name=Interactive+Matlab+GUI+webinar" rel="nofollow" target="_blank">buy</a>)</li>
<li><a target="_blank" href="/courses/Advanced_Matlab_GUI_Webinar.pdf">Advanced Matlab GUI</a> (3:37 hours) &#8211; $195 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=195&#038;item_name=Advanced+Matlab+GUI+webinar" rel="nofollow" target="_blank">buy</a>)</li>
<li><a target="_blank" href="/courses/Expert_Matlab_GUI_Webinar.pdf">Expert Matlab GUI</a> (3:33 hours) &#8211; $195 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=195&#038;item_name=Expert+Matlab+GUI+webinar" rel="nofollow" target="_blank">buy</a>)<br />
 &nbsp;&nbsp;&nbsp; ==> or buy all 3 Matlab GUI webinars for only $495 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=495&#038;item_name=Matlab+GUI+webinars" rel="nofollow" target="_blank">buy</a>)
</li>
<li><a target="_blank" href="/courses/Matlab_Performance_Tuning_1_Webinar.pdf">Matlab performance tuning part 1</a> (3:39 hours) &#8211; $195 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=195&#038;item_name=Matlab+performance+1+webinar" rel="nofollow" target="_blank">buy</a>)</li>
<li><a target="_blank" href="/courses/Matlab_Performance_Tuning_2_Webinar.pdf">Matlab performance tuning part 2</a> (3:43 hours) &#8211; $195 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=195&#038;item_name=Matlab+performance+2+webinar" rel="nofollow" target="_blank">buy</a>)<br />
 &nbsp;&nbsp;&nbsp; ==> or buy both Matlab performance tuning webinars for only $345 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=345&#038;item_name=Matlab+performance+webinars" rel="nofollow" target="_blank">buy</a>)
</li>
<li><a target="_blank" href="/courses/Object_Oriented_Matlab_Webinar.pdf">Object-oriented Matlab programming</a> (3:36 hours) &#8211; $195 (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=195&#038;item_name=Matlab+OOP+webinar" rel="nofollow" target="_blank">buy</a>)
</li>
<li> &nbsp;&nbsp;&nbsp; ==> or buy all 6 Matlab webinars (GUI, performance &amp; OOP) for only <b>$895</b> (<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;currency_code=USD&#038;business=octahedron.ltd@gmail.com&#038;quantity=1&#038;amount=895&#038;item_name=Matlab+programming+webinars" rel="nofollow" target="_blank">buy</a>)
</ul>
<p>All webinars are highly technical, concise and to the point, making very effective use of your time. They are based on onsite training courses that I presented at multiple client locations (<a href="/training#onsite" target="_blank">details</a>).<br />
These webinars could be a great way for you to improve your Matlab proficiency and efficiency. You will quickly learn how to produce higher quality, better looking, faster working, and more robust applications. Your effectiveness in writing Matlab programs will improve, saving you development time while improving the quality. And all this at the comfort and convenience of your office or home.<br />
<a href="mailto: altmany @gmail.com?subject=Matlab webinars&#038;body=Hi Yair, &#038;cc=;&#038;bcc=" rel="nofollow" target="_blank" onclick="var n='altmany'; var d='gmail.com'; window.open('mailto:'+n+'@'+d+'?subject=Matlab webinars&#038;body=Hi Yair, '); return false;"><img decoding="async" src="https://undocumentedmatlab.com/images/email-icon.png" width="32" height="22" alt="" style="vertical-align:middle;border:0"/>&nbsp;Email me</a> if you would like additional information or a group discount, or to inquire regarding an onsite training course, or for any other related query/suggestion.</p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/advanced-matlab-online-webinars">Advanced Matlab online webinars</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/online-web-based-matlab" rel="bookmark" title="Online (web-based) Matlab">Online (web-based) Matlab </a> <small>Matlab Online is a MathWorks product that enables running Matlab applications via a full-fledged web interface. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/simple-gui-tabs-for-advanced-matlab-trading-app" rel="bookmark" title="Simple GUI Tabs for Advanced Matlab Trading App">Simple GUI Tabs for Advanced Matlab Trading App </a> <small>A new File Exchange utility enables to easily design GUI tabs using Matlab's GUIDE...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/changes-in-the-online-doc-urls" rel="bookmark" title="Changes in the online doc URLs">Changes in the online doc URLs </a> <small>Matlab release R2012b has broken a vast number of links to its online documentation pages. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/advanced-jide-property-grids" rel="bookmark" title="Advanced JIDE Property Grids">Advanced JIDE Property Grids </a> <small>JIDE property grids can use complex cell renderer and editor components and can signal property change events asynchronously to Matlab callbacks...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://undocumentedmatlab.com/articles/advanced-matlab-online-webinars/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Matlab GUI training seminars &#8211; Zurich, 29-30 August 2017</title>
		<link>https://undocumentedmatlab.com/articles/matlab-gui-training-seminars-zurich-29-30-august-2017?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=matlab-gui-training-seminars-zurich-29-30-august-2017</link>
					<comments>https://undocumentedmatlab.com/articles/matlab-gui-training-seminars-zurich-29-30-august-2017#respond</comments>
		
		<dc:creator><![CDATA[Yair Altman]]></dc:creator>
		<pubDate>Fri, 04 Aug 2017 09:37:52 +0000</pubDate>
				<category><![CDATA[Public presentation]]></category>
		<category><![CDATA[AppDesigner]]></category>
		<category><![CDATA[Callbacks]]></category>
		<category><![CDATA[Figure]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[GUIDE]]></category>
		<category><![CDATA[Handle graphics]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JIDE]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[uicontrol]]></category>
		<guid isPermaLink="false">http://undocumentedmatlab.com/?p=6992</guid>

					<description><![CDATA[<p>Advanced Matlab training courses on Matlab User Interfaces (GUI) will be presented in Zurich Switzerland on 29-30 August, 2017</p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/matlab-gui-training-seminars-zurich-29-30-august-2017">Matlab GUI training seminars &#8211; Zurich, 29-30 August 2017</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017" rel="bookmark" title="Matlab Expo &#8211; Bern, 22 June 2017">Matlab Expo &#8211; Bern, 22 June 2017 </a> <small>I will be speaking about easy-to-use Matlab tricks at the upcoming Matlab Expo in Bern, Switzerland on June 22, 2017. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/findjobj-find-underlying-java-object" rel="bookmark" title="FindJObj &#8211; find a Matlab component&#039;s underlying Java object">FindJObj &#8211; find a Matlab component&#039;s underlying Java object </a> <small>The FindJObj utility can be used to access and display the internal components of Matlab controls and containers. This article explains its uses and inner mechanism....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/images-in-matlab-uicontrols-and-labels" rel="bookmark" title="Images in Matlab uicontrols &amp; labels">Images in Matlab uicontrols &amp; labels </a> <small>Images can be added to Matlab controls and labels in a variety of manners, documented and undocumented. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/training" rel="bookmark" title="New training courses">New training courses </a> <small>I am now offering a new service of professional Matlab training, at your location. ...</small></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<p><span class="alignright"><img decoding="async" alt="Advanced Matlab training, Zurich 29-30 August 2017" src="https://undocumentedmatlab.com/images/20140520_153734a_500x321.jpg" title="Advanced Matlab training, Zurich 29-30 August 2017" width="400" height="257"/></span><br />
Advanced Matlab training courses/seminars will be presented by me (Yair) in Zürich, Switzerland on 29-30 August, 2017:</p>
<ul>
<li>August 29 (full day) &#8211; <b>Interactive Matlab GUI</b></li>
<p> <!-- - US$399 (CHF 390.-) ($100 discount if paid by July 31) --></p>
<li>August 30 (full day) &#8211; <b>Advanced Matlab GUI</b></li>
<p> <!-- - US$399 (CHF 390.-) ($100 discount if paid by July 31) --><br />
	<!-- li>Enroll to both courses (2 full days) for a total price of US$699 (CHF 680.-)</li --> <!-- ($150 extra discount if paid by July 31) -->
</ul>
<p><!-- b>Both seminars are confirmed</b>: they do not depend on a minimal number of participants. But there is a limit on the total number of participants, so the sooner you enroll, the more likely you are to get a seat. --><br />
The seminars are targeted at Matlab users who wish to improve their program&#8217;s usability and professional appearance. Basic familiarity with the Matlab environment and coding/programming is assumed. The courses will present a mix of both documented and undocumented aspects, which is not available anywhere else. The curriculum is listed below.<br />
This is a unique opportunity to enhance your Matlab coding skills and improve your program&#8217;s usability in a couple of days<!-- , at a very affordable cost -->.<br />
If you are interested in either or both of these seminars, please <a href="mailto:%20altmany%20@gmail.com?subject=Matlab%20training%20Zurich&amp;body=Hi%20Yair,%20&amp;cc=;&amp;bcc=" rel="nofollow" target="_blank" onclick="var n='altmany'; var d='gmail.com'; window.open('mailto:'+n+'@'+d+'?subject=Matlab training Zurich&amp;body=Hi Yair, '); return false;">Email me</a> (altmany at gmail dot com).<br />
I can also schedule a dedicated visit to your location, for onsite Matlab training customized to your organization&#8217;s specific needs. Additional information can be found on my <a target="_blank" href="/training/">Training page</a>.<br />
Around the time of the training, I will be traveling to various locations around Switzerland. <!-- in Geneva (Aug 22-27), Bern (Aug 27-28), Zürich (Aug 28-30), and Basel (Aug 30 - Sep 3) --> If you wish to meet me in person to discuss how I could bring value to your project, then please email me (altmany at gmail):</p>
<ul>
<li>Geneva: Aug 22 &#8211; 27</li>
<li>Bern: Aug 27 &#8211; 28</li>
<li>Zürich: Aug 28 &#8211; 30</li>
<li>Stuttgart: Aug 30 &#8211; 31</li>
<li>Basel: Sep 1 &#8211; 3</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://undocumentedmatlab.com/images/email-icon.png" width="32" height="22" alt="" style="vertical-align:middle;border:0"/>&nbsp;<a href="mailto: altmany @gmail.com?subject=Matlab consulting/training&#038;body=Hi Yair, &#038;cc=;&#038;bcc=" rel="nofollow" target="_blank" onclick="var n='altmany'; var d='gmail.com'; window.open('mailto:'+n+'@'+d+'?subject=Matlab consulting/training&#038;body=Hi Yair, '); return false;">Email me</a><br />
<span id="more-6992"></span></p>
<hr/>
<h3 id="GUI">Interactive Matlab GUI &#8211; 29 August, 2017</h3>
<ol>
<li>Introduction to Matlab Graphical User Interfaces (GUI)
<ul>
<li>Design principles and best practices</li>
<li>Matlab GUI alternatives</li>
<li>Typical evolution of Matlab GUI developers</li>
</ul>
</li>
<li>GUIDE – MATLAB&#8217;s GUI Design Editor
<ul>
<li>Using GUIDE to design a custom GUI</li>
<li>Available built-in MATLAB uicontrols</li>
<li>Customizing uicontrols</li>
<li>Important figure and uicontrol properties</li>
<li>GUIDE utility windows</li>
<li>The GUIDE-generated file-duo</li>
</ul>
</li>
<li>Customizing GUI appearance and behavior
<ul>
<li>Programmatic GUI creation and control</li>
<li>GUIDE vs. m-programming</li>
<li>Attaching callback functionality to GUI components</li>
<li>Sharing data between GUI components</li>
<li>The handles data struct</li>
<li>Using handle visibility</li>
<li>Position, size and units</li>
<li>Formatting GUI using HTML</li>
</ul>
</li>
<li>Uitable
<ul>
<li>Displaying data in a MATLAB GUI uitable</li>
<li>Controlling column data type</li>
<li>Customizing uitable appearance</li>
<li>Reading uitable data</li>
<li>Uitable callbacks</li>
<li>Additional customizations using Java</li>
</ul>
</li>
<li>Matlab&#8217;s new App Designer and web-based GUI
<ul>
<li>App Designer environment, widgets and code</li>
<li>The web-based future of Matlab GUI and assumed roadmap</li>
<li>App Designer vs. GUIDE – pros and cons comparison</li>
</ul>
</li>
<li>Performance and interactivity considerations
<ul>
<li>Speeding up the initial GUI generation</li>
<li>Improving GUI responsiveness</li>
<li>Actual vs. perceived performance</li>
<li>Continuous interface feedback</li>
<li>Avoiding common performance pitfalls</li>
<li>Tradeoff considerations</li>
</ul>
</li>
</ol>
<p><!-- Throughout the day, a sample data-structure container class will be developed and presented in phases, illustrating the points discussed in the presentation, along with suggestions and discussion on design alternatives, programming quality, efficiency, robustness, maintainability, and performance. In other words, the seminar will include not just a formal presentation of the material but also a live annotated development of a real-world Matlab class that illustrates the presented topics. --><br />
At the end of this seminar, you will have learned how to:</p>
<ul>
<li>apply GUI design principles in Matlab</li>
<li>create simple Matlab GUIs</li>
<li>manipulate and customize graphs, images and GUI components</li>
<li>display Matlab data in a variety of GUI manners, including data tables</li>
<li>decide between using GUIDE, App Designer and/or programmatic GUI</li>
<li>understand tradeoffs in design and run-time performance</li>
<li>comprehend performance implications, to improve GUI speed and responsiveness</li>
</ul>
<hr/>
<h3 id="AMG">Advanced Matlab GUI &#8211; 30 August, 2017</h3>
<ol>
<li>Advanced topics in Matlab GUI
<ul>
<li>GUI callback interrupts and re-entrancy</li>
<li>GUI units and resizing</li>
<li>Advanced HTML formatting</li>
<li>Using hidden (undocumented) properties</li>
<li>Listening to action and property-change events</li>
<li>Uitab, uitree, uiundo and other uitools</li>
</ul>
</li>
<li>Customizing the figure window
<ul>
<li>Creating and customizing the figure&#8217;s main menu</li>
<li>Creating and using context menus</li>
<li>Creating and customizing figure toolbars</li>
</ul>
</li>
<li>Using Java with Matlab GUI
<ul>
<li>Matlab and Java Swing</li>
<li>Integrating Java controls in Matlab GUI</li>
<li>Handling Java events as Matlab callbacks</li>
<li>Integrating built-in Matlab controls/widgets</li>
<li>Integrating JIDE&#8217;s advanced features and professional controls</li>
<li>Integrating 3rd-party Java components: charts/graphs/widgets/reports</li>
</ul>
</li>
<li>Advanced Matlab-Java GUI
<ul>
<li>Customizing standard Matlab uicontrols</li>
<li>Figure-level customization (maximize/minimize, disable etc.)</li>
<li>Containers and position – Matlab vs. Java</li>
<li>Compatibility aspects and trade-offs</li>
<li>Safe programming with Java in Matlab</li>
<li>Java&#8217;s EDT and timing considerations</li>
<li>Deployment (compiler) aspects</li>
</ul>
</li>
</ol>
<p>At the end of this seminar, you will have learned how to:</p>
<ul>
<li>customize the figure toolbar and main menu</li>
<li>use HTML to format GUI appearance</li>
<li>integrate Java controls in Matlab GUI</li>
<li>customize your Matlab GUI to a degree that you never knew was possible</li>
<li>create a modern-looking professional GUI in Matlab</li>
</ul>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/matlab-gui-training-seminars-zurich-29-30-august-2017">Matlab GUI training seminars &#8211; Zurich, 29-30 August 2017</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017" rel="bookmark" title="Matlab Expo &#8211; Bern, 22 June 2017">Matlab Expo &#8211; Bern, 22 June 2017 </a> <small>I will be speaking about easy-to-use Matlab tricks at the upcoming Matlab Expo in Bern, Switzerland on June 22, 2017. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/findjobj-find-underlying-java-object" rel="bookmark" title="FindJObj &#8211; find a Matlab component&#039;s underlying Java object">FindJObj &#8211; find a Matlab component&#039;s underlying Java object </a> <small>The FindJObj utility can be used to access and display the internal components of Matlab controls and containers. This article explains its uses and inner mechanism....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/images-in-matlab-uicontrols-and-labels" rel="bookmark" title="Images in Matlab uicontrols &amp; labels">Images in Matlab uicontrols &amp; labels </a> <small>Images can be added to Matlab controls and labels in a variety of manners, documented and undocumented. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/training" rel="bookmark" title="New training courses">New training courses </a> <small>I am now offering a new service of professional Matlab training, at your location. ...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://undocumentedmatlab.com/articles/matlab-gui-training-seminars-zurich-29-30-august-2017/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Matlab Expo &#8211; Bern, 22 June 2017</title>
		<link>https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=matlab-expo-bern-22-june-2017</link>
					<comments>https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017#comments</comments>
		
		<dc:creator><![CDATA[Yair Altman]]></dc:creator>
		<pubDate>Sun, 11 Jun 2017 13:26:55 +0000</pubDate>
				<category><![CDATA[Public presentation]]></category>
		<category><![CDATA[Conference]]></category>
		<guid isPermaLink="false">http://undocumentedmatlab.com/?p=6927</guid>

					<description><![CDATA[<p>I will be speaking about easy-to-use Matlab tricks at the upcoming Matlab Expo in Bern, Switzerland on June 22, 2017. </p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017">Matlab Expo &#8211; Bern, 22 June 2017</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/matlab-gui-training-seminars-zurich-29-30-august-2017" rel="bookmark" title="Matlab GUI training seminars &#8211; Zurich, 29-30 August 2017">Matlab GUI training seminars &#8211; Zurich, 29-30 August 2017 </a> <small>Advanced Matlab training courses on Matlab User Interfaces (GUI) will be presented in Zurich Switzerland on 29-30 August, 2017...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/munich-germany-visit-may-2016" rel="bookmark" title="Munich Germany visit, 9-11 May 2016">Munich Germany visit, 9-11 May 2016 </a> <small>I will be visiting clients in Munich, Germany between May 9-11, 2016 for advanced Matlab training and consulting. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/interesting-matlab-puzzle" rel="bookmark" title="Interesting Matlab puzzle">Interesting Matlab puzzle </a> <small>A simple Matlab puzzle that leads to interesting insight on Matlab's parser. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/tips-for-accelerating-matlab-performance" rel="bookmark" title="Tips for accelerating Matlab performance">Tips for accelerating Matlab performance </a> <small>My article on "Tips for Accelerating MATLAB Performance" was recently featured in the September 2017 Matlab newsletter digest. ...</small></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<p><span class="alignright" width="285" style="margin-bottom:20px;"><a href="http://www.matlabexpo.com/ch/?s_eid=PEP_12545" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" alt="Matlab Expo Bern - 22 June, 2017" src="https://undocumentedmatlab.com/images/Matlab_Expo_Bern_2017.jpg" title="Matlab Expo Bern - 22 June, 2017" width="285" height="74" /></a><br /><a href="http://www.mathworks.com/videos/creating-professional-quality-applications-with-matlab-120623.html" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" alt="Munich Germany Expo video, 10 May, 2016" src="https://undocumentedmatlab.com/images/DE-Expo-2016a.jpg" title="Munich Germany Expo video, 10 May, 2016" width="285" height="160" /></a><br /><span style="font-weight:normal; font-size:13px; line-height:10px; margin-left:0px;">My Matlab Expo 2016 keynote presentation (32:45)</br><i>(Matlab Expo 2017 presentation will be different)</i></span><br /></span>MathWorks were very kind to invite me to speak at the upcoming annual <a href="http://www.matlabexpo.com/ch/?s_eid=PEP_12545" rel="nofollow" target="_blank">Matlab Expo in Bern, Switzerland</a>, on June 22, 2017 at 15:30. My presentation will be about &#8220;<a href="http://matlabexpo.com/ch/2017/abstracts.html?expand=trackb&#038;#session12" rel="nofollow" target="_blank"><i>MATLAB Tricks You Need to Know</i></a>&#8220;.<br />
I also presented at <a href="/articles/upcoming-public-matlab-presentations" target="_blank">last year&#8217;s Expo in Munich</a> (you can see the video on the right). So in order not to bore the audience, my presentation this year will be completely different &#8211; it will not focus on any single program or industry, but instead provide content that should be relevant to a large portion of Matlab users.<br />
My presentation will highlight several simple-to-use tips and tricks that can improve Matlab program usability and performance, and Matlab programming productivity in general. My aim is to show that Matlab can be used to create professional-quality applications, without sacrificing Matlab&#8217;s benefits (RAD, functionality, reliability), and that Matlab is certainly relevant for serious user-facing applications, not just for prototyping and internal organizational use.<br />
I am targeting the presentation at anyone who uses Matlab, with any level of experience. Many of the tricks will be easy enough to use that even novice users could benefit, and some tricks might be useful even to advanced users. All these tricks are simple to understand, and yet very effective for improving run-time performance and visualization quality.<br />
Participation in the Bern Expo is free, please don&#8217;t hesitate to come. If you&#8217;re considering it, then you might also be interested in my <a href="/articles/matlab-training-seminars-zurich-19-20-june-2017" target="_blank">Advanced Matlab seminars in Zurich</a> earlier that same week, on June 19-20.<br />
If you are in the area and wish to meet me to discuss how I could bring value to your work, then please email me (<a href="mailto: altmany @gmail.com?subject=Bern meeting&#038;body=Hi Yair, &#038;cc=;&#038;bcc=" rel="nofollow" target="_blank" onclick="var n='altmany'; var d='gmail.com'; window.open('mailto:'+n+'@'+d+'?subject=Bern meeting&#038;body=Hi Yair, '); return false;">altmany at gmail</a>) to coordinate a meeting. We could meet either at the Expo, or in a dedicated (private) meeting.<br />
<b><u>Update June 23, 2017</u></b>: I am extremely disappointed to report that my presentation at the Matlab Expo in Bern yesterday was not video-recorded. I thought that it went quite well so this makes me very sad. Anyway, you can see <a href="/files/Expo-2017.pdf" rel="nofollow" target="_blank">my presentation slides here</a>. It doesn&#8217;t contain all the explanations and extra details that I communicated verbally, but I think that it might still be useful as-is. I hope you find it beneficial!<br />
<center><img decoding="async" alt="Matlab Expo Bern - 22 June, 2017" src="https://undocumentedmatlab.com/images/Bern-Expo-2017-gallery-06.jpg" title="Matlab Expo Bern - 22 June, 2017" width="100%" style="max-width: 640px;" /> <img decoding="async" alt="Matlab Expo Bern - 22 June, 2017" src="https://undocumentedmatlab.com/images/Bern-Expo-2017-gallery-07.jpg" title="Matlab Expo Bern - 22 June, 2017" width="100%" style="max-width: 640px;" /></center></p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017">Matlab Expo &#8211; Bern, 22 June 2017</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/matlab-gui-training-seminars-zurich-29-30-august-2017" rel="bookmark" title="Matlab GUI training seminars &#8211; Zurich, 29-30 August 2017">Matlab GUI training seminars &#8211; Zurich, 29-30 August 2017 </a> <small>Advanced Matlab training courses on Matlab User Interfaces (GUI) will be presented in Zurich Switzerland on 29-30 August, 2017...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/munich-germany-visit-may-2016" rel="bookmark" title="Munich Germany visit, 9-11 May 2016">Munich Germany visit, 9-11 May 2016 </a> <small>I will be visiting clients in Munich, Germany between May 9-11, 2016 for advanced Matlab training and consulting. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/interesting-matlab-puzzle" rel="bookmark" title="Interesting Matlab puzzle">Interesting Matlab puzzle </a> <small>A simple Matlab puzzle that leads to interesting insight on Matlab's parser. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/tips-for-accelerating-matlab-performance" rel="bookmark" title="Tips for accelerating Matlab performance">Tips for accelerating Matlab performance </a> <small>My article on "Tips for Accelerating MATLAB Performance" was recently featured in the September 2017 Matlab newsletter digest. ...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>A few parfor tips</title>
		<link>https://undocumentedmatlab.com/articles/a-few-parfor-tips?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-few-parfor-tips</link>
					<comments>https://undocumentedmatlab.com/articles/a-few-parfor-tips#comments</comments>
		
		<dc:creator><![CDATA[Yair Altman]]></dc:creator>
		<pubDate>Wed, 06 Jul 2016 16:29:21 +0000</pubDate>
				<category><![CDATA[Medium risk of breaking in future versions]]></category>
		<category><![CDATA[Public presentation]]></category>
		<category><![CDATA[Undocumented function]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Pure Matlab]]></category>
		<guid isPermaLink="false">http://undocumentedmatlab.com/?p=6516</guid>

					<description><![CDATA[<p>The parfor (parallel for) loops  can be made faster using a few simple tips. </p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/a-few-parfor-tips">A few parfor tips</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/quirks-with-parfor-vs-for" rel="bookmark" title="Quirks with parfor vs. for">Quirks with parfor vs. for </a> <small>Parallelizing loops with Matlab's parfor might generate unexpected results. Users beware! ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/controlling-plot-data-tips" rel="bookmark" title="Controlling plot data-tips">Controlling plot data-tips </a> <small>Data-tips are an extremely useful plotting tool that can easily be controlled programmatically....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/tips-for-accelerating-matlab-performance" rel="bookmark" title="Tips for accelerating Matlab performance">Tips for accelerating Matlab performance </a> <small>My article on "Tips for Accelerating MATLAB Performance" was recently featured in the September 2017 Matlab newsletter digest. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/some-performance-tuning-tips" rel="bookmark" title="Some Matlab performance-tuning tips">Some Matlab performance-tuning tips </a> <small>Matlab can be made to run much faster using some simple optimization techniques. ...</small></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<p><figure style="width: 500px" class="wp-caption alignright"><a href="http://www.mathworks.com/videos/creating-professional-quality-applications-with-matlab-120623.html" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" alt="Matlab Expo 2016 keynote presentation" src="https://undocumentedmatlab.com/images/DE-Expo-2016a.jpg" title="Matlab Expo 2016 keynote presentation" width="500" height="281" /></a><figcaption class="wp-caption-text">Matlab Expo 2016 keynote presentation</figcaption></figure> A few days ago, MathWorks uploaded a video recording of my recent <a href="/articles/upcoming-public-matlab-presentations" target="_blank">keynote presentation</a> at the Matlab Expo 2016 in Munich, Germany. During the presentation, I skimmed over a few tips for improving performance of parallel-processing (<i><b>parfor</b></i>) loops. In today&#8217;s post I plan to expand on these tips, as well as provide a few others that for lack of space and time I did not mention in the presentation.<br />
The overall effect can be dramatic: The performance (speed) difference between a sub-optimal and optimized <i><b>parfor</b></i>&#8216;ed code can be up to a full order of magnitude, depending on the specific situation. Naturally, to use any of today&#8217;s tips, you need to have MathWorks&#8217; Parallel Computing Toolbox (PCT).<br />
Before diving into the technical details, let me say that MathWorks has extensive documentation on PCT. In today&#8217;s post I will try not to reiterate the official tips, but rather those that I have not found mentioned elsewhere, and/or are not well-known (my apologies in advance if I missed an official mention of one or more of the following). Furthermore, I limit myself only to <i><b>parfor</b></i> in this post: much can be said about <i><b>spmd</b></i>, GPU and other parallel constructs, but not today.<br />
<span id="more-6516"></span></p>
<h3 id="numCores"><i>parpool(numCores)</i></h3>
<p>The first tip is to not [always] use the default number of workers created by <i><b>parpool</b></i> (or <i><b>matlabpool</b></i> in R2013a or earlier). By default, Matlab creates as many workers as logical CPU cores. On Intel CPUs, the OS reports two logical cores per each physical core due to hyper-threading, for a total of 4 workers on a dual-core machine. However, in many situations, hyperthreading does not improve the performance of a program and may even degrade it (I deliberately wish to avoid the heated debate over this: you can find endless discussions about it online and decide for yourself). Coupled with the non-negligible overhead of starting, coordinating and communicating with twice as many Matlab instances (workers are headless [=GUI-less] Matlab processes after all), we reach a conclusion that it may actually be better in many cases to use only as many workers as physical (not logical) cores.<br />
I know the documentation and configuration panel seem to imply that <i><b>parpool</b></i> uses the number of physical cores by default, but in my tests I have seen otherwise (namely, logical cores). Maybe this is system-dependent, and maybe there is a switch somewhere that controls this, I don&#8217;t know. I just know that in many cases I found it beneficial to <i>reduce</i> the number of workers to the actual number of physical cores:</p>
<pre lang="matlab">
p = parpool;     % use as many workers as logical CPUs (4 on my poor laptop...)
p = parpool(2);  % use only 2 parallel workers
</pre>
<p>Of course, this can vary greatly across programs and platforms, so you should test carefully on your specific setup. I suspect that for the majority of Matlab programs it would turn out that using the number of physical cores is better.<br />
It would of course be better to dynamically retrieve the number of physical cores, rather than hard-coding a constant value (number of workers) into our program. We can get this value in Matlab using the undocumented <i><b>feature(&#8216;numcores&#8217;)</b></i> function:</p>
<pre lang="matlab">
numCores = feature('numcores');
p = parpool(numCores);
</pre>
<p>Running <i><b>feature(&#8216;numcores&#8217;)</b></i> without assigning its output displays some general debugging information:</p>
<div class="wp_syntax">
<div class="code">
<pre class="matlab" style="font-family:monospace;">&gt;&gt; feature(<span style="color:#A020F0;">'numcores'</span>)
MATLAB detected: 2 physical cores.
MATLAB detected: 4 logical cores.
MATLAB was assigned: 4 logical cores by the OS.
MATLAB is using: 2 logical cores.
MATLAB is not using all logical cores because hyper-threading is enabled.
ans =
     2
</pre>
</div>
</div>
<p>Naturally, this specific tip is equally valid for both <i><b>parfor</b></i> loops and <i><b>spmd</b></i> blocks, since both of them use the pool of workers started by <i><b>parpool</b></i>.</p>
<h3 id="multi-code">Running separate code in parfor loops</h3>
<p>The conventional wisdom is that <i><b>parfor</b></i> loops (and loops in general) can only run a single code segment over all its iterations. Of course, we can always use conditional constructs (such as <i><b>if</b></i> or <i><b>switch</b></i>) based on the data. But what if we wanted some workers to run a different code path than the other workers? In <i><b>spmd</b></i> blocks we could use a conditional based on the <i><b>labindex</b></i> value, but unfortunately <i><b>labindex</b></i> is always set to the same value 1 within <i><b>parfor</b></i> loops. So how can we let worker A run a different code path than worker B?<br />
An obvious answer is to create a <i><b>parfor</b></i> loop having as many elements as there are separate code paths, and use a <i><b>switch-case</b></i> mechanism to run the separate paths, as follows:</p>
<pre lang="matlab">
% Naive implementation example - do NOT use!
parfor idx = 1 : 3
   switch idx
      case 1,  result{1} = fun1(data1, data2);
      case 2,  result{2} = fun2(data3, data4, data5);
      case 3,  result{3} = fun3(data6);
   end
end
</pre>
<p>There are several problems with this naive implementation. First, it unnecessarily broadcasts all the input data to all workers (more about this issue below). Secondly, it appears clunky and too verbose. A very nice extension of this mechanism, <a href="http://stackoverflow.com/questions/4495000/multi-threading-in-matlab" rel="nofollow" target="_blank">posted by StackOverflow heavyweight Jonas</a>, uses indexed arrays of function handles and input args, thereby solving both problems:</p>
<pre lang="matlab">
funcList = {@fun1, @fun2, @fun3};
dataList = {data1, data2, data3};  %# or pass file names
parfor idx = 1 : length(funcList)
    result{idx} = funcList{idx}(dataList{idx});
end
</pre>
<h3 id="broadcast">Reduce the amount of broadcast data</h3>
<p>It is often easy, <i>too</i>-easy, to convert <i><b>for</b></i> loops into <i><b>parfor</b></i> loops. In many cases, all we need to do is to add the &#8220;par&#8221; prefix to the <i><b>for</b></i> keyword and we&#8217;re done (assuming we have no incompatibly-used variables that should be converted into sliced variables etc.). This transformation was intentionally made simple by MathWorks (which is great!). On the other hand, it also hides a lot under the hood. One of the things that is often overlooked in such simple loop transformations is that a large part of the data used within the loop needs to be copied (<i>broadcast</i>) to each of the workers separately. This means that each of the data items needs to be serialized (i.e., copied in memory), packaged, communicated to and accepted by each of the workers. This can mean a lot of memory, networking bandwidth and time-consuming. It can even mean thrashing to hard-disk in case the number of workers times the amount of transferred data exceeds the available RAM. For example, if we have 10GB available RAM and try to communicate 3GB to 4 workers, we will not have enough RAM and the OS will start swapping to hard-disk. This will kill performance and Matlab will appear &#8220;hung&#8221; and will need to be hard-killed.<br />
You might think that it would be very difficult to reach the RAM limit, but in fact it can be far too easy when you consider the multiplication by the number of workers, and the fact that each worker uses 1+GB of memory just for its MATLAB process, even before the data, and all this in addition to the parent (client) Matlab process. That&#8217;s a lot of GBs flying around&#8230;<br />
Moreover, it&#8217;s enough for one small part of a Matlab struct or array to be used within the <i><b>parfor</b></i> loop for the entire Matlab construct to be broadcast to all workers. For example, a very common use-case is to store program data, both raw and processed, within a simple Matlab struct. Let&#8217;s say that we have <code>data.raw</code> and <code>data.processed</code> and within the loop we only need <code>data.processed</code> &#8211; the entire <code>data</code> variable (which might include many GBs due to the raw data) is broadcast, although the loop&#8217;s code only needs <code>data.processed</code>. In such cases, it makes sense to separate the broadcast data into standalone variables, and only use them within the loop:</p>
<pre lang="matlab">
data.raw = ...
data.processed = ...
% Inefficient variant:
parfor idx = 1 : N
   % do something with data.processed
end
% This is better:
processedData = data.processed;
parfor idx = 1 : N
   % do something with processedData
end
</pre>
<p>Moreover, if you can convert a broadcast variable into a sliced one, this would be even better: in this case each worker will only be communicated its small share (&#8220;slice&#8221;) of the entire data, rather than a full copy of the entire data.<br />
All this would of course be much simpler if Matlab&#8217;s computational engine was multi-threaded, since then PCT could be implemented using lightweight threads rather than heavyweight processes. The memory and communication overheads would then be drastically reduced and performance would improve significantly. Unfortunately, Matlab&#8217;s computational engine is [still] single-threaded, preventing this. Hopefully Matlab&#8217;s new engine (which debuted in R2015b) will enable true multithreading at some future release. PCT will still need to retain an option of using headless worker processes to run on multiple machines (i.e., distributed/grid/cloud computing), but single-machine parallelization should employ multithreading instead.<br />
Additional speedup tips can be found in my book &#8220;<i><a href="/books/matlab-performance" target="_blank">Accelerating MATLAB Performance</a></i>&#8220;.<br />
Do you have some other important <i><b>parfor</b></i> tips that you found useful? If so, please post them in a comment below.</p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/a-few-parfor-tips">A few parfor tips</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/quirks-with-parfor-vs-for" rel="bookmark" title="Quirks with parfor vs. for">Quirks with parfor vs. for </a> <small>Parallelizing loops with Matlab's parfor might generate unexpected results. Users beware! ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/controlling-plot-data-tips" rel="bookmark" title="Controlling plot data-tips">Controlling plot data-tips </a> <small>Data-tips are an extremely useful plotting tool that can easily be controlled programmatically....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/tips-for-accelerating-matlab-performance" rel="bookmark" title="Tips for accelerating Matlab performance">Tips for accelerating Matlab performance </a> <small>My article on "Tips for Accelerating MATLAB Performance" was recently featured in the September 2017 Matlab newsletter digest. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/some-performance-tuning-tips" rel="bookmark" title="Some Matlab performance-tuning tips">Some Matlab performance-tuning tips </a> <small>Matlab can be made to run much faster using some simple optimization techniques. ...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://undocumentedmatlab.com/articles/a-few-parfor-tips/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Adding a search box to figure toolbar</title>
		<link>https://undocumentedmatlab.com/articles/adding-a-search-box-to-figure-toolbar?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adding-a-search-box-to-figure-toolbar</link>
					<comments>https://undocumentedmatlab.com/articles/adding-a-search-box-to-figure-toolbar#comments</comments>
		
		<dc:creator><![CDATA[Yair Altman]]></dc:creator>
		<pubDate>Wed, 30 Mar 2016 13:50:53 +0000</pubDate>
				<category><![CDATA[Figure window]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Medium risk of breaking in future versions]]></category>
		<category><![CDATA[Public presentation]]></category>
		<category><![CDATA[AppDesigner]]></category>
		<category><![CDATA[Internal component]]></category>
		<guid isPermaLink="false">http://undocumentedmatlab.com/?p=6353</guid>

					<description><![CDATA[<p>An interactive search-box can easily be added to a Matlab figure toolbar for enhanced user experience. </p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/adding-a-search-box-to-figure-toolbar">Adding a search box to figure toolbar</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/figure-toolbar-components" rel="bookmark" title="Figure toolbar components">Figure toolbar components </a> <small>Matlab's toolbars can be customized using a combination of undocumented Matlab and Java hacks. This article describes how to access existing toolbar icons and how to add non-button toolbar components....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/figure-toolbar-customizations" rel="bookmark" title="Figure toolbar customizations">Figure toolbar customizations </a> <small>Matlab's toolbars can be customized using a combination of undocumented Matlab and Java hacks. This article describes how to customize the Matlab figure toolbar....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/customizing-figure-toolbar-background" rel="bookmark" title="Customizing figure toolbar background">Customizing figure toolbar background </a> <small>Setting the figure toolbar's background color can easily be done using just a tiny bit of Java magic powder. This article explains how. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/customizing-standard-figure-toolbar-menubar" rel="bookmark" title="Customizing the standard figure toolbar, menubar">Customizing the standard figure toolbar, menubar </a> <small>The standard figure toolbar and menubar can easily be modified to include a list of recently-used files....</small></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<p>Last week I wrote about my <a href="/articles/upcoming-public-matlab-presentations" target="_blank">upcoming presentations</a> in Tel Aviv and Munich, where I will discuss a Matlab-based financial application that uses some advanced GUI concepts. In today&#8217;s post I will review one of these concepts that could be useful in a wide range of Matlab applications &#8211; adding an interactive search box to the toolbar of Matlab figures.<br />
The basic idea is simple: whenever the user types in the search box, a Matlab callback function checks the data for the search term. If one or more matches are found then the searchbox&#8217;s background remains white, otherwise it is colored yellow to highlight the term. When the user presses &lt;Enter&gt;, the search action is triggered to highlight the term in the data, and any subsequent press of &lt;Enter&gt; will highlight the next match (cycling back at the top as needed). Very simple and intuitive:<br />
<center><figure style="width: 600px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" alt="Interactive search-box in Matlab figure toolbar" src="https://undocumentedmatlab.com/images/Pairformax_search_animated.gif" title="Interactive search-box in Matlab figure toolbar" width="600" height="345" /><figcaption class="wp-caption-text">Interactive search-box in Matlab figure toolbar</figcaption></figure></center><br />
<span id="more-6353"></span><br />
In my specific case, the search action (highlighting the search term in the data) involved doing a lot of work: updating multiple charts and synchronizing row selection in several connected uitables. For this reason, I chose not to do this action interactively (upon each keypress in the search box) but rather only upon clicking &lt;Enter&gt;. In your implementation, if the search action is simpler and faster, you could do it interactively for an even more intuitive effect.</p>
<h3 id="components">Technical components</h3>
<p>The pieces of today&#8217;s post were already discussed separately on this website, but never shown together as I will do today:</p>
<ul>
<li>The search box component (<code>com.mathworks.widgets.SearchTextField</code>) was discussed in last year&#8217;s article on <a href="/articles/auto-completion-widget" target="_blank">auto-completion widgets</a></li>
<li>I showed how to <a href="/articles/figure-toolbar-components" target="_blank">add custom controls to the figure toolbar</a> in a 2009 post (time flies!)</li>
<li>I discussed <a href="/articles/figure-toolbar-customizations" target="_blank">controlling toolbar components&#8217; size</a> in another old post</li>
<li>I discussed my <a href="/articles/findjobj-find-underlying-java-object" target="_blank"><i><b>findjobj</b></i> utility</a>, used for accessing the underlying Java components of Matlab uicontrols in another article</li>
<li>I discussed <a href="/articles/matlab-and-the-event-dispatch-thread-edt" target="_blank">Matlab&#8217;s use of EDT</a> in a dedicated article on the subject back in 2010 (and I&#8217;ll have more to say about this subject next week)</li>
<li>Finally, I discussed how to trap Java control events in Matlab in separate articles <a href="/articles/uicontrol-callbacks" target="_blank">here</a> and <a href="/articles/matlab-callbacks-for-java-events-in-r2014a" target="_blank">here</a></li>
</ul>
<h3 id="toolbar">Adding a search-box to the figure toolbar</h3>
<p>As a first step, let&#8217;s create the search-box component and add it to our figure&#8217;s toolbar:</p>
<pre lang="matlab">
% First, create the search-box component on the EDT, complete with invokable Matlab callbacks:
jSearch = com.mathworks.widgets.SearchTextField('Symbol');  % 'Symbol' is my default search prompt
jSearchPanel = javaObjectEDT(jSearch.getComponent);  % this is a com.mathworks.mwswing.MJPanel object
jSearchPanel = handle(jSearchPanel, 'CallbackProperties');  % enable Matlab callbacks
% Now, set a fixed size for this component so that it does not resize when the figure resizes:
jSize = java.awt.Dimension(100,25);  % 100px wide, 25px tall
jSearchPanel.setMaximumSize(jSize)
jSearchPanel.setMinimumSize(jSize)
jSearchPanel.setPreferredSize(jSize)
jSearchPanel.setSize(jSize)
% Now, attach the Matlab callback function to search box events (key-clicks, Enter, and icon clicks):
jSearchBox = handle(javaObjectEDT(jSearchPanel.getComponent(0)), 'CallbackProperties');
set(jSearchBox, 'ActionPerformedCallback', {@searchSymbol,hFig,jSearchBox})
set(jSearchBox, 'KeyPressedCallback',      {@searchSymbol,hFig,jSearchBox})
jClearButton = handle(javaObjectEDT(jSearchPanel.getComponent(1)), 'CallbackProperties');
set(jClearButton, 'ActionPerformedCallback', {@searchSymbol,hFig,jSearchBox})
% Now, get the handle for the figure's toolbar:
hToolbar = findall(hFig,'tag','FigureToolBar');
jToolbar = get(get(hToolbar,'JavaContainer'),'ComponentPeer');  % or: hToolbar.JavaContainer.getComponentPeer
% Now, justify the search-box to the right of the toolbar using an invisible filler control
% (first add the filler control to the toolbar, then the search-box control):
jFiller = javax.swing.Box.createHorizontalGlue;  % this is a javax.swing.Box$Filler object
jToolbar.add(jFiller,      jToolbar.getComponentCount);
jToolbar.add(jSearchPanel, jToolbar.getComponentCount);
% Finally, refresh the toolbar so that the new control is displayed:
jToolbar.revalidate
jToolbar.repaint
</pre>
<h3 id="search">Search action callback functionality</h3>
<p>Now that the control is displayed in the toolbar, let&#8217;s define what our Matlab callback function <i>searchSymbol()</i> does. Remember that this callback function is invoked whenever any of the possible events occur: keypress, &lt;Enter&gt;, or clicking the search-box&#8217;s icon (typically the &#8220;x&#8221; icon, to clear the search term).<br />
We first reset the search-box appearance (foreground/background colors), then we check the search term (if non-empty). Based on the selected tab, we search the corresponding data table&#8217;s symbol column(s) for the search term. If no match is found, we highlight the search term by setting the search-box&#8217;s text to be red over yellow. Otherwise, we change the table&#8217;s selected row to the next match&#8217;s row index (i.e., the row following the table&#8217;s currently-selected row, cycling back at the top of the table if no match is found lower in the table).<br />
Reading and updating the table&#8217;s selected row requires using my <a href="/articles/findjobj-find-underlying-java-object" target="_blank"><i><b>findjobj</b></i> utility</a> &#8211; for performance considerations the jTable handle should be cached (perhaps in the hTable&#8217;s <b>UserData</b> or <b>ApplicationData</b>):</p>
<pre lang="matlab">
% Callback function to search for a symbol
function searchSymbol(hObject, eventData, hFig, jSearchBox)
    try
        % Clear search-box formatting
        jSearchBox.setBackground(java.awt.Color.white)
        jSearchBox.setForeground(java.awt.Color.black)
        jSearchBox.setSelectedTextColor(java.awt.Color.black)
        jSearchBox.repaint
        % Search for the specified symbol in the data table
        symbol = char(jSearchBox.getText);
        if ~isempty(symbol)
            handles = guidata(hFig);
            hTab = handles.hTabGroup.SelectedTab;
            colOffset = 0;
            forceCol0 = false;
            switch hTab.Title
                case 'Scanning'
                    hTable = handles.tbScanResults;
                    symbols = cell(hTable.Data(:,1));
                case 'Correlation'
                    hTable = handles.tbCorrResults;
                    symbols = cell(hTable.Data(:,1:2));
                case 'Backtesting'
                    hTab = handles.hBacktestTabGroup.SelectedTab;
                    hTable = findobj(hTab, 'Type','uitable', 'Tag','results');
                    pairs = cell(hTable.Data(:,1));
                    symbols = cellfun(@(c)strsplit(c,'/'), pairs, 'uniform',false);
                    symbols = reshape([symbols{:}],2,[])';
                    forceCol0 = true;
                case 'Trading'
                    hTable = handles.tbTrading;
                    symbols = cell(hTable.Data(:,2:3));
                    colOffset = 1;
                otherwise  % ignore
                    return
            end
            if isempty(symbols)
                return
            end
            [rows,cols] = ind2sub(size(symbols), find(strcmpi(symbol,symbols)));
            if isempty(rows)
                % Not found - highlight the search term
                jSearchBox.setBackground(java.awt.Color.yellow)
                jSearchBox.setForeground(java.awt.Color.red)
                jSearchBox.setSelectedTextColor(java.awt.Color.red)
                jSearchBox.repaint
            elseif isa(eventData, 'java.awt.event.KeyEvent') && isequal(eventData.getKeyCode,10)
                % Found with <enter> event - highlight the relevant data row
                jTable = findjobj(hTable);
                try jTable = jTable.getViewport.getView; catch, end  % in case findjobj returns the containing scrollpane rather than the jTable
                [rows, sortedIdx] = sort(rows);
                cols = cols(sortedIdx);
                currentRow = jTable.getSelectedRow + 1;
                idx = find(rows>currentRow,1);
                if isempty(idx),  idx = 1;  end
                if forceCol0
                    jTable.changeSelection(rows(idx)-1, 0, false, false)
                else
                    jTable.changeSelection(rows(idx)-1, cols(idx)-1+colOffset, false, false)
                end
                jTable.repaint
                jTable.getTableHeader.repaint
                jTable.getParent.getParent.repaint
                drawnow
            end
        end
    catch
        % never mind - ignore
    end
end
</pre>
<p>That&#8217;s all there is to it. In my specific case, changing the table&#8217;s selected row cased an immediate trigger that updated the associated charts, synchronized the other data tables and did several other background tasks.</p>
<h3 id="uifigure">What about the new web-based uifigure?</h3>
<p>The discussion above refers only to traditional Matlab <i><b>figure</b></i>s (both HG1 and HG2), not to the new web-based (AppDesigner) <i><b>uifigure</b></i>s that were officially introduced in R2016a (I <a href="/articles/sliders-in-matlab-gui#AppDesigner" target="_blank">wrote about it</a> last year).<br />
AppDesigner uifigures are basically webpages rather than desktop windows (JFrames). They use an entirely different UI mechanism, based on HTML webpages served from a localhost webserver, using the <a href="https://dojotoolkit.org" rel="nofollow" target="_blank">DOJO Javascript toolkit</a> for visualization and interaction, rather than Java Swing as in the existing JFrame figures. The existing figures still work without change, and are expected to continue working alongside the new uifigures for the foreseeable future. I&#8217;ll discuss the new uifigures in separate future posts (in the meantime you can read a bit about them in <a href="/articles/sliders-in-matlab-gui#AppDesigner" target="_blank">my post</a> from last year).<br />
I suspect that the new uifigures will replace the old figures at some point in the future, to enable a fully <a href="/articles/online-web-based-matlab" target="_blank">web-based (online) Matlab</a>. Will this happen in 2017 or 2027 ? &#8211; your guess is as good as mine, but my personal guesstimate is around 2018-2020.</p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/adding-a-search-box-to-figure-toolbar">Adding a search box to figure toolbar</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/figure-toolbar-components" rel="bookmark" title="Figure toolbar components">Figure toolbar components </a> <small>Matlab's toolbars can be customized using a combination of undocumented Matlab and Java hacks. This article describes how to access existing toolbar icons and how to add non-button toolbar components....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/figure-toolbar-customizations" rel="bookmark" title="Figure toolbar customizations">Figure toolbar customizations </a> <small>Matlab's toolbars can be customized using a combination of undocumented Matlab and Java hacks. This article describes how to customize the Matlab figure toolbar....</small></li>
<li><a href="https://undocumentedmatlab.com/articles/customizing-figure-toolbar-background" rel="bookmark" title="Customizing figure toolbar background">Customizing figure toolbar background </a> <small>Setting the figure toolbar's background color can easily be done using just a tiny bit of Java magic powder. This article explains how. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/customizing-standard-figure-toolbar-menubar" rel="bookmark" title="Customizing the standard figure toolbar, menubar">Customizing the standard figure toolbar, menubar </a> <small>The standard figure toolbar and menubar can easily be modified to include a list of recently-used files....</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://undocumentedmatlab.com/articles/adding-a-search-box-to-figure-toolbar/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Public Matlab presentations</title>
		<link>https://undocumentedmatlab.com/articles/upcoming-public-matlab-presentations?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=upcoming-public-matlab-presentations</link>
					<comments>https://undocumentedmatlab.com/articles/upcoming-public-matlab-presentations#comments</comments>
		
		<dc:creator><![CDATA[Yair Altman]]></dc:creator>
		<pubDate>Wed, 23 Mar 2016 09:00:03 +0000</pubDate>
				<category><![CDATA[Public presentation]]></category>
		<category><![CDATA[Conference]]></category>
		<guid isPermaLink="false">http://undocumentedmatlab.com/?p=6326</guid>

					<description><![CDATA[<p>I present a professional pairs-trading and analysis program in Matlab conferences in Tel Aviv and Munich.  </p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/upcoming-public-matlab-presentations">Public Matlab presentations</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/munich-germany-visit-may-2016" rel="bookmark" title="Munich Germany visit, 9-11 May 2016">Munich Germany visit, 9-11 May 2016 </a> <small>I will be visiting clients in Munich, Germany between May 9-11, 2016 for advanced Matlab training and consulting. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/usa-visit-july-2014" rel="bookmark" title="USA visit, 22-31 July 2014">USA visit, 22-31 July 2014 </a> <small>I will be visiting some US cities on July 2014. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/tips-for-accelerating-matlab-performance" rel="bookmark" title="Tips for accelerating Matlab performance">Tips for accelerating Matlab performance </a> <small>My article on "Tips for Accelerating MATLAB Performance" was recently featured in the September 2017 Matlab newsletter digest. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017" rel="bookmark" title="Matlab Expo &#8211; Bern, 22 June 2017">Matlab Expo &#8211; Bern, 22 June 2017 </a> <small>I will be speaking about easy-to-use Matlab tricks at the upcoming Matlab Expo in Bern, Switzerland on June 22, 2017. ...</small></li>
</ol>
</div>
]]></description>
										<content:encoded><![CDATA[<p><span class="alignright" width="285"><a href="http://www.matlabexpo.com/de/?s_eid=PEP_12545" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" alt="Matlab Expo Munich - 10 May, 2016" src="https://undocumentedmatlab.com/images/Matlab_Expo_Munich_2016.jpg" title="Matlab Expo Munich - 10 May, 2016" width="285" height="83" /></a><br /><a href="http://www.mathworks.com/videos/creating-professional-quality-applications-with-matlab-120623.html" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" alt="Munich Germany Expo video, 10 May, 2016" src="https://undocumentedmatlab.com/images/DE-Expo-2016a.jpg" title="Munich Germany Expo video, 10 May, 2016" width="285" height="160" /></a><br /><span style="font-weight:normal; font-size:13px; line-height:10px; margin-left:8px;">My Matlab Expo 2016 keynote presentation (32:45)</span></span>I will be presenting in two upcoming Matlab conferences:</p>
<ul>
<li>April 5, 2016 &#8211; Tel Aviv, Israel &#8211; <a href="http://www.systematics.co.il/products/mathworks/events/data-analytics-conf2016/#toggle-id-11" rel="nofollow" target="_blank">Matlab Data Analytics</a> <!-- (see the <a href="/files/Pairformax-Systematics.pdf" target="_blank">presentation slides</a>) --></li>
<li>May 10, 2016 &#8211; Munich, Germany &#8211; <a href="http://www.matlabexpo.com/de/2016/abstracts.html?s_eid=PEP_12545" rel="nofollow" target="_blank">Matlab Expo keynote</a> (<a href="/Pairformax/Expo-2016.pdf" target="_blank">presentation slides</a>, <a href="http://www.mathworks.com/videos/creating-professional-quality-applications-with-matlab-120623.html" rel="nofollow" target="_blank">presentation video</a>)</li>
</ul>
<p>In both cases I will present a professional pairs-trading and analysis application (&#8220;Pairformax&#8221;) that I developed for use by a New York hedge fund. This application analyzes large amounts of data relatively quickly, and presents the results in a professional-grade GUI. My aim is to use this example to show that contrary to a widespread mis-conception, professional Matlab programs can be created without sacrificing performance (speed) or appearance. Coupled with Matlab&#8217;s recognized benefits (rapid app development and off-the-shelf functionality), Matlab is certainly relevant for serious user-facing applications, not just for prototyping and internal organizational use.</p>
<p>My presentations will be focused on the technical Matlab aspects, not the specific financial functionality of the program. I am targeting the presentations at anyone who designs and creates Matlab programs, not just in the financial fields. I will discuss some of the technical challenges encountered during the development, and a few simple techniques that can be very effective for improving run-time performance and visualization quality.</p>
<p>If you are in the area and wish to meet me to discuss how I could bring value to your work, then please email me (<a href="mailto: altmany @gmail.com?subject=Munich meeting&#038;body=Hi Yair, &#038;cc=;&#038;bcc=" rel="nofollow" target="_blank" onclick="var n='altmany'; var d='gmail.com'; window.open('mailto:'+n+'@'+d+'?subject=Munich meeting&#038;body=Hi Yair, '); return false;">altmany at gmail</a>) to coordinate a meeting. We could meet either at the conferences, or in a dedicated (private) meeting.</p>
<p>Below are screenshots from the 2016 presentations. The program was improved since then &#8211; <font size="+1"><b><a href="https://undocumentedmatlab.com/Pairlogix/Pairlogix_Screenshots.pdf" target="_blank">see updated screenshots</a></b>.</font><br />
<center><a href="/images/Pairformax_BT_results.gif" target="_blank"><img decoding="async" alt="Matlab-based pairs-trading and analysis application" src="https://undocumentedmatlab.com/images/Pairformax_BT_results.gif" title="Matlab-bsed pairs-trading and analysis application" width="90%" style="max-width:1108px;"/></a><br />
</center><span id="more-6326"></span><center></p>
<p><a href="/images/Pairformax_BT_chart.gif" target="_blank"><img decoding="async" alt="Matlab-based pairs-trading and analysis application" src="https://undocumentedmatlab.com/images/Pairformax_BT_chart.gif" title="Matlab-based pairs-trading and analysis application" width="90%" style="max-width:691px;"/></a><br />
<a href="http://www.mathworks.com/videos/creating-professional-quality-applications-with-matlab-120623.html" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" alt="Munich Germany Expo video, 10 May, 2016" src="https://undocumentedmatlab.com/images/DE-Expo-2016a.jpg" title="Munich Germany Expo video, 10 May, 2016" width="640" height="360" /></a><br />Presentation video (32:45)<br />
</center></p>
<p>The post <a rel="nofollow" href="https://undocumentedmatlab.com/articles/upcoming-public-matlab-presentations">Public Matlab presentations</a> appeared first on <a rel="nofollow" href="https://undocumentedmatlab.com">Undocumented Matlab</a>.</p>
<div class='yarpp-related-rss'>
<h3>Related posts:</h3><ol>
<li><a href="https://undocumentedmatlab.com/articles/munich-germany-visit-may-2016" rel="bookmark" title="Munich Germany visit, 9-11 May 2016">Munich Germany visit, 9-11 May 2016 </a> <small>I will be visiting clients in Munich, Germany between May 9-11, 2016 for advanced Matlab training and consulting. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/usa-visit-july-2014" rel="bookmark" title="USA visit, 22-31 July 2014">USA visit, 22-31 July 2014 </a> <small>I will be visiting some US cities on July 2014. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/tips-for-accelerating-matlab-performance" rel="bookmark" title="Tips for accelerating Matlab performance">Tips for accelerating Matlab performance </a> <small>My article on "Tips for Accelerating MATLAB Performance" was recently featured in the September 2017 Matlab newsletter digest. ...</small></li>
<li><a href="https://undocumentedmatlab.com/articles/matlab-expo-bern-22-june-2017" rel="bookmark" title="Matlab Expo &#8211; Bern, 22 June 2017">Matlab Expo &#8211; Bern, 22 June 2017 </a> <small>I will be speaking about easy-to-use Matlab tricks at the upcoming Matlab Expo in Bern, Switzerland on June 22, 2017. ...</small></li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://undocumentedmatlab.com/articles/upcoming-public-matlab-presentations/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
