{"id":982,"date":"2014-03-12T09:53:13","date_gmt":"2014-03-12T13:53:13","guid":{"rendered":"https:\/\/blogs.mathworks.com\/steve\/?p=982"},"modified":"2019-11-01T11:00:00","modified_gmt":"2019-11-01T15:00:00","slug":"r2014a-shipped-and-the-developer-says-wait-what","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/steve\/2014\/03\/12\/r2014a-shipped-and-the-developer-says-wait-what\/","title":{"rendered":"R2014a shipped! (And the developer says, &#8220;Wait, what?&#8221;)"},"content":{"rendered":"<div class=\"content\"><p>At MathWorks, the software developers' sense of calendar time is SO out of sync with the real world. In the real world, MathWorks shipped R2014a, the first of our <a href=\"https:\/\/www.mathworks.com\/products\/new_products\/release_model.html\">two annual releases<\/a>, last week. In the developers' world, R2014a is old news. Right now all the developers are heads-down and sprinting toward the feature deadline for the next release, R2014b.<\/p><p>(On a personal, but somewhat related, side note, I recently reached my 20-year milestone with MathWorks. In my first decade with the company, MATLAB releases happened several years apart in unpredictable and somewhat chaotic fashion. The transition in 2004-2005 to a regular, repeatable, and completely reliable twice-per-year release schedule is one of the most impressive changes I've seen here.)<\/p><p>For image processing, the big news in MATLAB R2014a is webcam support. You can use MATLAB to bring in live images from USB Video Class webcams, which includes those built into laptops and those that plug into your computer via a USB port. Here's a <a href=\"https:\/\/www.mathworks.com\/support\/2014a\/matlab\/8.3\/demos\/webcam-support.html\">video<\/a> that explains how it all works.<\/p><p>Winning the award for \"why didn't you do that years ago?\" is multidimensional array support for <tt>flipud<\/tt>, <tt>fliplr<\/tt>, and <tt>rot90<\/tt> functions. For image processing applications, that means you can use these functions directly on truecolor (M-by-N-by-3) images, like this:<\/p><pre class=\"codeinput\">rgb = imread(<span class=\"string\">'peppers.png'<\/span>);\r\nsubplot(1,3,1)\r\nimshow(rgb)\r\ntitle(<span class=\"string\">'Original'<\/span>)\r\n\r\nsubplot(1,3,2)\r\nrgb2 = fliplr(rgb);\r\nimshow(rgb2)\r\ntitle(<span class=\"string\">'fliplr result'<\/span>)\r\n\r\nsubplot(1,3,3)\r\nrgb3 = rot90(rgb);\r\nimshow(rgb3)\r\ntitle(<span class=\"string\">'rot90 result'<\/span>)\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/images\/steve\/2014\/r2014a_part1_01.png\" alt=\"\"> <p>Those of you building small robots to take over the world might want to check out the new Raspberry Pi hardware support.<\/p><p>The MATLAB Math Team was busy making a collection of functions that make it easier to write linear algebra algorithms, including a bunch of is* functions (<tt>ishermitian<\/tt>, <tt>istril<\/tt>, etc.), an efficient Sylvester equation solver, and an option for computing left eigenvectors. The control system experts here seemed very excited about the Sylvester equation solver. I have no idea why, because in my senior year in EE I decided to specialize in signal processing instead of controls.<\/p><p>For the software developers among you, the still-new matlab.unittest framework is growing rapidly, with support for new custom plugins, the Test Anything Protocol (TAP), and automatic test parameterization. (I recently used the automatic test parameterization feature to update the test for the suite of examples in the book <i>Digital Image Processing Using MATLAB<\/i>.)<\/p><p>There are many other capabilities introduced in the new MATLAB version. I've mentioned here only a few of them that particularly caught my eye. I encourage you to take a look at the MATLAB release notes or watch the the <a href=\"https:\/\/www.mathworks.com\/products\/new_products\/latest_features.html\">R2014a Highlights<\/a> video.<\/p><p>I don't think I've ever mentioned product licensing on this blog, but I wanted to give a shout to <a href=\"https:\/\/www.mathworks.com\/products\/matlab-home\/\">MATLAB Home<\/a>, a new license option intended to support MATLAB for personal and hobby use.<\/p><p>Finally, <a href=\"https:\/\/blogs.mathworks.com\/cleve\/\">Cleve<\/a> was in my office yesterday and said I should write a blog about these MATLAB bottlecap refrigerator magnets that my son made for me. They are very popular. Just about everyone picks them up to play with them. I think I like the one with the white background better.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"https:\/\/blogs.mathworks.com\/images\/steve\/2014\/bottle-caps.jpg\" alt=\"\"> <\/p><p>What's your vote?<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_6b11e572c6df411eae5d92bc9c85a959() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='6b11e572c6df411eae5d92bc9c85a959 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 6b11e572c6df411eae5d92bc9c85a959';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2014 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_6b11e572c6df411eae5d92bc9c85a959()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2014a<br><\/p><p class=\"footer\"><br>\r\n      Published with MATLAB&reg; R2014a<br><\/p><\/div><!--\r\n6b11e572c6df411eae5d92bc9c85a959 ##### SOURCE BEGIN #####\r\n%% R2014a shipped! (And the developer says, \"Wait, what?\")\r\n%\r\n% At MathWorks, the software developers' sense of calendar time is SO out\r\n% of sync with the real world. In the real world, MathWorks shipped R2014a,\r\n% the first of our\r\n% <https:\/\/www.mathworks.com\/products\/new_products\/release_model.html two\r\n% annual releases>, last week. In the developers' world, R2014a is old\r\n% news. Right now all the developers are heads-down and sprinting toward\r\n% the feature deadline for the next release, R2014b.\r\n%\r\n% (On a personal, but somewhat related, side note, I recently reached my\r\n% 20-year milestone with MathWorks. In my first decade with the company,\r\n% MATLAB releases happened several years apart in unpredictable and\r\n% somewhat chaotic fashion. The transition in 2004-2005 to a regular,\r\n% repeatable, and completely reliable twice-per-year release schedule is\r\n% one of the most impressive changes I've seen here.)\r\n%\r\n% For image processing, the big news in MATLAB R2014a is webcam support.\r\n% You can use MATLAB to bring in live images from USB Video Class webcams,\r\n% which includes those built into laptops and those that plug into your\r\n% computer via a USB port. Here's a \r\n% <https:\/\/www.mathworks.com\/help\/matlab\/rmvd_matlablink__bf609a87a1ae0402343f4c704218e6db.html video>\r\n% that explains how it all works.\r\n%\r\n% Winning the award for \"why didn't you do that years ago?\" is\r\n% multidimensional array support for |flipud|, |fliplr|, and |rot90|\r\n% functions. For image processing applications, that means you can use\r\n% these functions directly on truecolor (M-by-N-by-3) images, like this:\r\n\r\nrgb = imread('peppers.png');\r\nsubplot(1,3,1)\r\nimshow(rgb)\r\ntitle('Original')\r\n\r\nsubplot(1,3,2)\r\nrgb2 = fliplr(rgb);\r\nimshow(rgb2)\r\ntitle('fliplr result')\r\n\r\nsubplot(1,3,3)\r\nrgb3 = rot90(rgb);\r\nimshow(rgb3)\r\ntitle('rot90 result')\r\n\r\n%%\r\n% Those of you building small robots to take over the world might want to\r\n% check out the new Raspberry Pi hardware support.\r\n%\r\n% The MATLAB Math was busy making a collection of functions that make it\r\n% easier to write linear algebra algorithms, including a bunch of is*\r\n% functions (|ishermitian|, |istril|, etc.), an efficient Sylvester\r\n% equation solver, and an option for computing left eigenvectors. The\r\n% control system experts here seemed very excited about the Sylvester\r\n% equation solver. I have no idea why, because in my senior year in EE I\r\n% decided to specialize in signal processing instead of controls.\r\n%\r\n% For the software developers among you, the still-new matlab.unittest\r\n% framework is growing rapidly, with support for new custom plugins,\r\n% the Test Anything Protocol (TAP), and automatic test parameterization. (I\r\n% recently used the automatic test parameterization feature to update the\r\n% test for the suite of examples in the book _Digital Image Processing\r\n% Using MATLAB_.)\r\n%\r\n% There are many other capabilities introduced in the new MATLAB version.\r\n% I've mentioned here only a few of them that particularly caught my eye. I\r\n% encourage you to take a look at the MATLAB release notes or watch the the\r\n% <https:\/\/www.mathworks.com\/products\/new_products\/latest_features.html\r\n% R2014a Highlights> video.\r\n%\r\n% I don't think I've ever mentioned product licensing on this blog, but I\r\n% wanted to give a shout to\r\n% <https:\/\/www.mathworks.com\/products\/matlab-home\/ MATLAB Home>, a new\r\n% license option intended to support MATLAB for personal and hobby use.\r\n%\r\n% Finally,\r\n% <https:\/\/blogs.mathworks.com\/cleve\/ Cleve>\r\n% was in my office yesterday and said I should write a blog about these\r\n% MATLAB bottlecap refrigerator magnets that my son made for me. They are\r\n% very popular. Just about everyone picks them up to play with them. I\r\n% think I like the one with the white background better.\r\n%\r\n% <<https:\/\/blogs.mathworks.com\/images\/steve\/2014\/bottle-caps.jpg>>\r\n%\r\n% What's your vote?\r\n\r\n##### SOURCE END ##### 6b11e572c6df411eae5d92bc9c85a959\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"https:\/\/blogs.mathworks.com\/images\/steve\/2014\/r2014a_part1_01.png\" onError=\"this.style.display ='none';\" \/><\/div><p>At MathWorks, the software developers' sense of calendar time is SO out of sync with the real world. In the real world, MathWorks shipped R2014a, the first of our two annual releases, last week. In... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/steve\/2014\/03\/12\/r2014a-shipped-and-the-developer-says-wait-what\/\">read more >><\/a><\/p>","protected":false},"author":42,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[192,76,36,526,72,52],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts\/982"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/comments?post=982"}],"version-history":[{"count":8,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts\/982\/revisions"}],"predecessor-version":[{"id":3825,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/posts\/982\/revisions\/3825"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/media?parent=982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/categories?post=982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/steve\/wp-json\/wp\/v2\/tags?post=982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}