{"id":5135,"date":"2016-03-04T16:13:16","date_gmt":"2016-03-04T21:13:16","guid":{"rendered":"https:\/\/blogs.mathworks.com\/simulink\/?p=5135"},"modified":"2016-03-04T16:13:16","modified_gmt":"2016-03-04T21:13:16","slug":"my-top-5-new-features-in-r2016a","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/simulink\/2016\/03\/04\/my-top-5-new-features-in-r2016a\/","title":{"rendered":"My top 5 new features in R2016a"},"content":{"rendered":"<p>Simulink R2016a has just been released and it includes a <a href=\"https:\/\/www.mathworks.com\/help\/simulink\/release-notes.html\">ton of new features and improvements<\/a>. There is so much it is impossible to cover everything in just one blog post.<\/p>\r\n\r\n<p>For this first blog post about R2016a, I decided to present my top five favorites.<\/p>\r\n\r\n<p><strong>Variant Source and Sink Blocks<\/strong><\/p>\r\n\r\n<p>For many years, it has been possible to control which blocks are active or not during a simulation by using <a href=\"https:\/\/www.mathworks.com\/help\/simulink\/slref\/variantsubsystem.html\">Subsystem Variants<\/a>. In R2016a, we introduced a completely new way to do it: <a href=\"https:\/\/www.mathworks.com\/help\/simulink\/ug\/variant-condition-propagation-with-variant-source-and-sink-blocks.html\">Variant Source and Sink blocks<\/a>. In this example, the grayed out blocks are inactive, controlled by a variable \"a\" in the base workspace.<\/p>\r\n\r\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/seth\/2016Q1\/VariantSourceSink.png\" alt=\"Variant Source and Sink\" \/><\/p>\r\n\r\n<p><strong>Simulink Units<\/strong><\/p>\r\n\r\n<p><a href=\"https:\/\/www.mathworks.com\/help\/simulink\/units.html\">Units in Simulink<\/a> allow you to specify the unit of measurement of signals entering and exiting subsystems, model blocks, Stateflow Charts, and MATLAB Function blocks. In the example below, subsystem A outputs meters per second, but subsystem B expects inches per second. If they were directly connected, this would generate a warning or error, recommending you insert a <a href=\"https:\/\/www.mathworks.com\/help\/simulink\/slref\/unitconversion.html\">Unit Conversion block<\/a> (as shown) to automatically take care of the conversion.<\/p>\r\n\r\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/seth\/2016Q1\/units.png\" alt=\"Simulink Units\" \/><\/p>\r\n\r\n<p><strong>Three-Way Model Merge<\/strong><\/p>\r\n\r\n<p>For those of you who are working in team on a project under source control, you will love this addition to the <a href=\"https:\/\/www.mathworks.com\/products\/SL_reportgenerator\/\">Simulink Report Generator<\/a>: <a title=\"https:\/\/www.mathworks.com\/help\/releases\/R2017a\/rptgenext\/examples\/resolve-conflicts-with-simulink-three-way-merge.html (link no longer works)\">Simulink Three-Way Merge<\/a>.<\/p>\r\n\r\n<p>This feature shows you the conflicts between changes committed by another user, your changes, and the common ancestor. At the bottom, for each conflict, if the merge can be automated you can pick which one you want to end up in the target. For conflicts that cannot be automatically fixed, you can manually resolve them, mark as resolved, and then commit the target file.<\/P>\r\n\r\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/seth\/2016Q1\/merge.png\" alt=\"Three-Way Merge\" \/><\/p>\r\n\r\n<p><strong>Simscape Run-Time Parameters<\/strong><\/p>\r\n\r\n<p>Simscape now supports run-time parameters. This means that you can create an executable from your model using Simulink Coder and change the values of parameters without regenerating the code.<\/p>\r\n\r\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/seth\/2016Q1\/runtimeparams.png\" alt=\"Simscape Run-Time Parameters\" \/><\/p>\r\n\r\n<p><strong>Simulink Solver Profiler<\/strong><\/p>\r\n\r\n<p>This last one is very special to me. Over the past several years, I developed lots of tips and tricks to debug variable-step simulations. I have <a href=\"https:\/\/blogs.mathworks.com\/simulink\/2012\/06\/04\/the-most-useful-command-for-debugging-variable-step-solver-performance\/\">shared<\/a> <a href=\"https:\/\/blogs.mathworks.com\/simulink\/2015\/07\/06\/identifying-the-root-cause-of-an-algebraic-constraint-violation\/\">many<\/a> of <a href=\"https:\/\/blogs.mathworks.com\/simulink\/2013\/04\/26\/zero-crossing-detection-what-are-your-options\/\">these<\/a> on this blog.<\/p>\r\n\r\n<p>For my work in MathWorks Technical Support, I need to understand why the solver takes the steps it does, so I wrote some MATLAB code to automate the gathering of the information I find useful when I analyze a model. After sharing some of these tools with my colleagues, someone suggested that my code would probably be of great help to you, our user community.<\/p>\r\n\r\n<p>So over the past year, we worked at packaging it all in a <a href=\"https:\/\/www.mathworks.com\/help\/simulink\/ug\/examine-solver-behavior-using-solver-profiler.html\">Solver Profiler<\/a>, which gathers information during a simulation and presents it in a way that will help you better understand your simulation's solver step behavior.<\/p>\r\n\r\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/seth\/2016Q1\/solverProfiler.png\" alt=\"Solver Profiler\" \/><\/p>\r\n\r\n<p><strong>Now it's your turn<\/strong><\/p>\r\n\r\n<p>Go through the <a href=\"https:\/\/www.mathworks.com\/help\/simulink\/release-notes.html#R2016a\">release notes<\/a>, and leave us a comment below to tell us <i>your<\/i> favorite new feature!<\/p>","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"https:\/\/blogs.mathworks.com\/images\/seth\/2016Q1\/solverProfiler.png\" onError=\"this.style.display ='none';\" \/><\/div><p>Simulink R2016a has just been released and it includes a ton of new features and improvements. There is so much it is impossible to cover everything in just one blog post.\r\n\r\nFor this first blog post... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/simulink\/2016\/03\/04\/my-top-5-new-features-in-r2016a\/\">read more >><\/a><\/p>","protected":false},"author":41,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[466],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/5135"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/comments?post=5135"}],"version-history":[{"count":23,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/5135\/revisions"}],"predecessor-version":[{"id":5159,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/5135\/revisions\/5159"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/media?parent=5135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/categories?post=5135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/tags?post=5135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}