{"id":5066,"date":"2021-02-19T00:16:03","date_gmt":"2021-02-18T23:16:03","guid":{"rendered":"https:\/\/blogs.mathworks.com\/student-lounge\/?p=5066"},"modified":"2021-04-06T21:38:35","modified_gmt":"2021-04-06T19:38:35","slug":"introduction-to-matlab-for-python-users","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/student-lounge\/2021\/02\/19\/introduction-to-matlab-for-python-users\/","title":{"rendered":"Introduction to MATLAB for Python Users"},"content":{"rendered":"<div><em>Today\u2019s blog is written by <a href=\"https:\/\/www.linkedin.com\/in\/jennifer-rebbin\/\">Jennifer Rebbin<\/a>, Jennifer is an Application Support Engineer with the Engineering Development Group at MathWorks. In this blog, she shares some important concepts that will help get you up to speed with using MATLAB as a Python user. Jennifer, over to you..<\/em><\/div>\n<p>&#8212;<\/p>\n<p><span data-contrast=\"auto\">You have some Python experience \u2013 maybe from a programming or data science class, or maybe from fun side projects. And now you are digging into your engineering\u00a0<\/span><span data-contrast=\"auto\">career or<\/span><span data-contrast=\"auto\">\u00a0classes and need to use MATLAB.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">There are a lot of similarities between MATLAB and Python, so your Python experience should\u00a0<\/span><span data-contrast=\"auto\">be<\/span><span data-contrast=\"auto\">\u00a0a good head start for learning MATLAB<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">This blog post examines the similarities and differences between MATLAB and Python and provides syntax examples for applying general programming concepts in MATLAB.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<h1 aria-level=\"1\"><span data-contrast=\"none\">Learn the basics of MATLAB\u00a0programming<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"none\">The basic data structure in MATLAB is a matrix<\/span><span data-contrast=\"none\">, while Python treats everything as<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">a general object.<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">In fact,\u00a0<\/span><span data-contrast=\"none\">\u201c<\/span><span data-contrast=\"none\">MATLAB<\/span><span data-contrast=\"none\">\u201d<\/span><span data-contrast=\"none\">\u00a0is an abbreviation for \u201cmatrix laboratory\u201d<\/span><span data-contrast=\"none\">&#8211;\u00a0<\/span><span data-contrast=\"none\">this difference is an integral part of what defines MATLAB.<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">Let\u2019s\u00a0<\/span><span data-contrast=\"none\">learn about MATLAB programming\u00a0<\/span><span data-contrast=\"none\">with an example\u00a0<\/span><span data-contrast=\"none\">u<\/span><span data-contrast=\"none\">sing<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">a<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">MATLAB dataset\u00a0<\/span><i><span data-contrast=\"none\">popcorn<\/span><\/i><span data-contrast=\"none\">.\u00a0<\/span><span data-contrast=\"none\">The data is from a study of popcorn brands and popper types (Hogg 1987). The columns of the matrix\u202fare<\/span><span data-contrast=\"none\">\u00a0popcorn<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">kernel\u00a0<\/span><span data-contrast=\"none\">brands, Gourmet, National, and Generic, respectivel<\/span><span data-contrast=\"none\">y.\u00a0<\/span><span data-contrast=\"none\">The first three rows correspond\u00a0<\/span><span data-contrast=\"none\">to\u00a0<\/span><span data-contrast=\"none\">batches using\u00a0<\/span><span data-contrast=\"none\">an<\/span><span data-contrast=\"none\">\u00a0oil popper, and the last three rows correspond to\u00a0<\/span><span data-contrast=\"none\">batches using\u00a0<\/span><span data-contrast=\"none\">an<\/span><span data-contrast=\"none\">\u00a0air popper. The response values are the yield in cups of popped popcorn<\/span><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">We can<\/span><span data-contrast=\"auto\">\u00a0load the data in the\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/learn_matlab\/desktop.html\"><span data-contrast=\"auto\">Command Window<\/span><\/a><span data-contrast=\"auto\">\u00a0panel\u00a0<\/span><span data-contrast=\"none\">of the MATLAB Desktop<\/span><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><img decoding=\"async\" loading=\"lazy\" width=\"1793\" height=\"438\" class=\"alignnone size-full wp-image-5180\" src=\"https:\/\/blogs.mathworks.com\/racing-lounge\/files\/2021\/02\/Image_1-1.png\" alt=\"\" \/><\/p>\n<pre class=\"language-matlab\">load <span class=\"string\">'popcorn'<\/span>;\r\npopcorn<\/pre>\n<pre class=\"codeoutput\"> popcorn = \r\n   5.5\u00a0 \u00a0 \u00a04.5\u00a0\u00a0\u00a0 3.5\r\n   5.5\u00a0 \u00a0 \u00a04.5\u00a0 \u00a0 \u00a04\r\n    6\u00a0 \u00a0 \u00a0\u00a0 4\u00a0 \u00a0 \u00a0 3\r\n   6.5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a05\u00a0 \u00a0 \u00a0 4\r\n    7\u00a0 \u00a0\u00a0 \u00a0 5\u00a0 \u00a0 \u00a0 5\r\n    7\u00a0 \u00a0 \u00a0 \u00a05\u00a0 \u00a0 \u00a04.5\r\n<\/pre>\n<p><span data-contrast=\"none\">Now that we have our data, we want to perform\u00a0<\/span><span data-contrast=\"none\">a simple calculation<\/span><span data-contrast=\"none\">\u00a0to<\/span><span data-contrast=\"none\">\u00a0determine the ratio of\u00a0<\/span><span data-contrast=\"none\">popped\u00a0<\/span><span data-contrast=\"none\">popcorn\u00a0<\/span><span data-contrast=\"none\">between the\u00a0<\/span><span data-contrast=\"none\">Gourmet and National brand<\/span><span data-contrast=\"none\">s<\/span><span data-contrast=\"none\">.<\/span><span data-contrast=\"none\">\u00a0Since we don\u2019t specify an\u00a0 output variable, MATLAB uses the v<\/span><span data-contrast=\"none\">ariable\u00a0<\/span><i><span data-contrast=\"none\">ans<\/span><\/i><span data-contrast=\"none\">\u00a0to store<\/span><span data-contrast=\"none\">\u00a0our calculation results.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:57,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">popcorn(:,1).\/popcorn(:,2)<\/pre>\n<pre class=\"codeoutput\"> ans\u00a0= \r\n   1.22\r\n   1.22\r\n   1.5\r\n   1.3\r\n   1.27\r\n   1.4\r\n<\/pre>\n<p><span data-contrast=\"none\">MATLAB was created for linear algebra so operators such as the\u00a0<\/span><span data-contrast=\"none\">division<\/span><span data-contrast=\"none\">\u00a0operator \u201c<\/span><span data-contrast=\"none\">\/<\/span><span data-contrast=\"none\">\u201d produce conventional matrix operations<\/span><span data-contrast=\"none\">, while some Python libraries perform operations element-by-element<\/span><span data-contrast=\"none\">. To perform eleme<\/span><span data-contrast=\"none\">nt-wise\u00a0<\/span><span data-contrast=\"none\">operations in MATLA<\/span><span data-contrast=\"none\">B,\u00a0<\/span><span data-contrast=\"none\">a period is placed before the operator, as in\u00a0<\/span><span data-contrast=\"none\">\u201c.<\/span><span data-contrast=\"none\">\/<\/span><span data-contrast=\"none\">\u201d<\/span><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:57,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">To learn more about<\/span><span data-contrast=\"none\">\u00a0common<\/span><span data-contrast=\"none\">\u00a0MATLAB syntax and its functionality, reference<\/span><span data-contrast=\"none\">\u00a0the table below<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">or<\/span><span data-contrast=\"auto\">\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/content\/dam\/mathworks\/fact-sheet\/matlab-basic-functions-reference.pdf\"><span data-contrast=\"auto\">this comprehensive guide<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335559685&quot;:57,&quot;335559731&quot;:113,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"393\" class=\"alignnone size-large wp-image-5232\" src=\"https:\/\/blogs.mathworks.com\/racing-lounge\/files\/2021\/02\/Table_1-1-1024x393.png\" alt=\"\" \/><\/p>\n<h1><span data-contrast=\"none\">Index data and function outputs<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"none\">Next, let\u2019s learn about indexing into data and function outputs. In MATLAB, the beginning element of an array has an index of 1, unlike in Python where the beginning element has an index of 0.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">M<\/span><span data-contrast=\"auto\">ATLAB\u00a0<\/span><span data-contrast=\"auto\">uses\u00a0<\/span><span data-contrast=\"none\">N-D\u00a0<\/span><span data-contrast=\"none\">indexing, or<\/span><span data-contrast=\"none\">\u00a0providing a specific index value for each array dimension (such as a row number and a column number). It\u2019s important to note that indices in Python are left inclusive and right exclusive but MATLAB is inclusive on both ends.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">popcorn<\/pre>\n<pre class=\"codeoutput\"> popcorn =\r\n     5.5    4.5    3.5\r\n     5.5    4.5     4 \r\n      6      4      3 \r\n     6.5     5      4 \r\n      7      5      5 \r\n      7      5     4.5 \r\n<\/pre>\n<pre class=\"language-matlab\"> <span class=\"comment\">% View batches with popper type\u00a0air\u00a0with N-D indexing<\/span>\r\npopcorn(4:end,:)<\/pre>\n<pre class=\"codeoutput\"> ans =\r\n     6.5     5     4\r\n      7     5.5    5\r\n      7      5    4.5\r\n<\/pre>\n<pre class=\"language-matlab\"> <span class=\"comment\">% View batches with\u00a0popcorn\u00a0brands Gourmet and\u00a0Generic\u00a0with N-D indexing<\/span>\r\npopcorn(:,[1 3])<\/pre>\n<pre class=\"codeoutput\"> ans =\r\n     5.5    3.5    \r\n     5.5     4 \r\n      6      3 \r\n     6.5     4 \r\n      7      5 \r\n      7     4.5    \r\n<\/pre>\n<p><span data-contrast=\"none\">MATLAB also uses linear indexing where a single subscript traverses down each column of an array in order, or logical indexing where MATLAB extracts matrix elements corresponding to non-zero elements of a logical array\u00a0<\/span><span data-contrast=\"auto\">produced by using an operator like \u201c&gt;\u201d in indexing. Find more information about these indexing\u00a0strategies\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/company\/newsletters\/articles\/matrix-indexing-in-matlab.html\"><span data-contrast=\"auto\">in this article<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\"> <span class=\"comment\">% View the ninth batch with linear indexing<\/span>\r\n   popcorn(9)<\/pre>\n<pre class=\"codeouput\"> ans = 4<\/pre>\n<pre class=\"language-matlab\"> <span class=\"comment\">% View batches producing more than 6 cups of popcorn with logical indexing<\/span>\r\npopcorn(popcorn&gt;6)<\/pre>\n<pre class=\"codeoutput\"> ans =\r\n     6.5\r\n      7 \r\n      7 \r\n<\/pre>\n<p><span data-contrast=\"none\">To<\/span><span data-contrast=\"auto\">\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/math\/creating-and-concatenating-matrices.html#OverviewCreatingAndConcatenatingExample-5\"><span data-contrast=\"auto\">expand an array<\/span><\/a><span data-contrast=\"auto\">, in Python you could append the item. In MATLAB, array size increases automatically to accommodate new elements outside index bounds which allows us to quickly manipulate arrays. If information is<\/span><span data-contrast=\"none\">\u00a0missing, MATLAB pads the matrix with zeros to keep it rectangular.<\/span><span data-contrast=\"auto\">\u00a0Let\u2019s add a new column for a fourth popper brand to be tested.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">popcorn(1,4) = 0<\/pre>\n<pre class=\"codeoutput\"> popcorn =\r\n     5.5    4.5    3.5    0\r\n     5.5    4.5     4     0\r\n      6      4      3     0\r\n     6.5     5      4     0\r\n      7     5.5     5     0\r\n      7      5     4.5    0\r\n<\/pre>\n<p><span data-contrast=\"none\">Now that we know how to expand an array in MATLAB, let\u2019s revert to the original matrix. To remove the column we just added, simply execute the following.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">popcorn(:,4) = [];<\/pre>\n<p><span data-contrast=\"none\">MATLAB and Python incorporate slightly different referencing schemes. Check out the table below to observe additional uses of MATLAB referencing syntax.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"461\" class=\"alignnone size-large wp-image-5228\" src=\"https:\/\/blogs.mathworks.com\/racing-lounge\/files\/2021\/02\/Table_Ref-1024x461.png\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n<h1><span data-contrast=\"none\">Writ<\/span><span data-contrast=\"none\">e<\/span><span data-contrast=\"none\">\u00a0and us<\/span><span data-contrast=\"none\">e<\/span><span data-contrast=\"none\">\u00a0MATLAB\u00a0functions<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"none\">Now that we\u00a0<\/span><span data-contrast=\"none\">understand<\/span><span data-contrast=\"none\">\u00a0basic MATLAB programming syntax<\/span><span data-contrast=\"none\">\u00a0and indexing<\/span><span data-contrast=\"none\">, let\u2019s<\/span><span data-contrast=\"none\">\u00a0explore\u00a0<\/span><span data-contrast=\"none\">a\u00a0<\/span><span data-contrast=\"none\">MATLAB\u00a0<\/span><span data-contrast=\"none\">built-in\u00a0<\/span><span data-contrast=\"none\">function<\/span><span data-contrast=\"none\">\u00a0<\/span><i><span data-contrast=\"none\">mean<\/span><\/i><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">and find the average\u00a0<\/span><span data-contrast=\"none\">popcorn yield<\/span><span data-contrast=\"none\">\u00a0for each popper brand.\u00a0<\/span><span data-contrast=\"none\">When calling built-in functions<\/span><span data-contrast=\"none\">\u00a0in MATLAB<\/span><span data-contrast=\"none\">, we won\u2019t need to reference a package nam<\/span><span data-contrast=\"none\">e.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">brandAvg = mean(popcorn)<\/pre>\n<pre class=\"codeoutput\"> brandAvg = \r\n     6.25    4.75    4<\/pre>\n<p><span data-contrast=\"none\">Let\u2019s create a<\/span><span data-contrast=\"none\">\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/function.html\"><span data-contrast=\"auto\">user-defined function<\/span><\/a><span data-contrast=\"none\">\u00a0<\/span><i><span data-contrast=\"none\">popperTypeAvg<\/span><\/i><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">in a\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/create-functions-in-files.html\"><span data-contrast=\"auto\">new Function file<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">to<\/span><span data-contrast=\"auto\">\u00a0compare the yield of<\/span><span data-contrast=\"auto\">\u00a0oil\u00a0<\/span><span data-contrast=\"auto\">and<\/span><span data-contrast=\"auto\">\u00a0air popper types.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">MATLAB uses\u00a0<\/span><i><span data-contrast=\"auto\">function<\/span><\/i><span data-contrast=\"auto\">\u00a0and\u00a0<\/span><i><span data-contrast=\"auto\">end<\/span><\/i><span data-contrast=\"auto\">, while Python uses\u00a0<\/span><i><span data-contrast=\"auto\">def<\/span><\/i><span data-contrast=\"auto\">.\u00a0<\/span><span data-contrast=\"auto\">We will use one input argument and two output arguments to\u00a0<\/span><span data-contrast=\"auto\">bring variables from the function workspace to our MATLAB base workspace.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\"> <span class=\"comment\">% Saved as\u00a0function\u00a0file on MATLAB path called\u00a0popperTypeAvg.m (file and function names must match)<\/span>\r\n<span class=\"keyword\">function<\/span> [firstHalfAvg, secondHalfAvg] = popperTypeAvg(data)\r\n     rows1to3 = mean(data(1:3,:),'all') \r\n     rows4to6 = mean(data(4:6,:),'all')\r\n<span class=\"keyword\">end<\/span> \r\n<\/pre>\n<p><span data-contrast=\"none\">Now let\u2019s call\u00a0<\/span><span data-contrast=\"none\">our<\/span><span data-contrast=\"none\">\u00a0function\u00a0<\/span><i><span data-contrast=\"none\">popperTypeAvg<\/span><\/i><span data-contrast=\"none\">, declaring the input as our dataset\u00a0<\/span><i><span data-contrast=\"none\">popcor<\/span><\/i><i><span data-contrast=\"none\">n<\/span><\/i><span data-contrast=\"none\">\u00a0and the output<\/span><span data-contrast=\"none\">s<\/span><span data-contrast=\"none\">\u00a0as variables\u00a0<\/span><i><span data-contrast=\"none\">oilAvg<\/span><\/i><span data-contrast=\"none\">\u00a0and\u00a0<\/span><i><span data-contrast=\"none\">airAvg<\/span><\/i><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">[oilAvg,airAvg] = popperTypeAvg(popcorn)<\/pre>\n<pre class=\"codeoutput\">  oilAvg = 4.5\r\n  airAvg = 5.5<\/pre>\n<p><span data-contrast=\"none\">In addition to creating a function definition file,<\/span><span data-contrast=\"none\">\u00a0there are other wa<\/span><span data-contrast=\"none\">y<\/span><span data-contrast=\"none\">s to define functions<\/span><span data-contrast=\"none\">\u00a0in MATLAB\u00a0including<\/span><span data-contrast=\"none\">\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/local-functions.html\"><span data-contrast=\"none\">local functions<\/span><\/a><span data-contrast=\"none\">\u00a0at the end of script file<\/span><span data-contrast=\"none\">s<\/span><span data-contrast=\"none\">,\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/nested-functions.html\"><span data-contrast=\"none\">nested functions<\/span><\/a><span data-contrast=\"none\">\u00a0located within another function<\/span><span data-contrast=\"none\">, and<\/span><span data-contrast=\"none\">\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/anonymous-functions.html\"><span data-contrast=\"none\">anonymous functions<\/span><\/a><span data-contrast=\"none\">\u00a0defined\u00a0<\/span><span data-contrast=\"none\">in an<\/span><span data-contrast=\"none\">\u00a0executable statement<\/span><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<h1><span data-contrast=\"none\">Visualize\u00a0data<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"none\">Let\u2019s<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">visualize our data and get a better idea of which brand\u00a0<\/span><span data-contrast=\"none\">yields<\/span><span data-contrast=\"none\">\u00a0the most popcorn.\u00a0<\/span><span data-contrast=\"none\">We can adjust figure\u00a0<\/span><span data-contrast=\"none\">p<\/span><span data-contrast=\"none\">roperties<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">within the function call\u00a0<\/span><span data-contrast=\"none\">using name-value pairs,\u00a0<\/span><span data-contrast=\"none\">or with separate\u00a0<\/span><span data-contrast=\"none\">command<\/span><span data-contrast=\"none\">s.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;469777462&quot;:[916,1832,2748,3664,4580,5496,6412,7328,8244,9160,10076,10992,11908,12824,13740,14656],&quot;469777927&quot;:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],&quot;469777928&quot;:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">bar(popcorn,'BarWidth',.75) \r\nbrandNames = [\"Gourmet\",\"National\",\"Generic\"]; \r\nlegend(brandNames,'Location','bestoutside') \r\ntitle('Popcorn Yield') \r\nxlabel('Batch Number') \r\nylabel('Cups of Popped Popcorn')<\/pre>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"750\" height=\"578\" class=\"alignnone size-full wp-image-5184\" src=\"https:\/\/blogs.mathworks.com\/racing-lounge\/files\/2021\/02\/Image_2_1.png\" alt=\"\" \/><\/p>\n<p><span data-contrast=\"none\">If we want to create\u00a0<\/span><span data-contrast=\"none\">one figure with three plots (one for each popcorn popper brand)<\/span><span data-contrast=\"none\">, we can use<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">the<\/span><span data-contrast=\"none\">\u00a0MATLAB function\u00a0<\/span><span class=\"language-matlab\">tiledlayout<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">and<\/span><span data-contrast=\"none\">\u00a0specify the number of rows and colum<\/span><span data-contrast=\"none\">ns as input arguments.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335559685&quot;:57,&quot;335559731&quot;:113,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\"><span class=\"comment\">% To obtain the number of columns of an array, we can specify the second dimension\u00a0in size(A,dim)<\/span>\r\ntiledlayout(1,size(popcorn,2)) \r\n<span class=\"keyword\">for<\/span> i = 1:size(popcorn,2) \r\n    nexttile \r\n    bar(popcorn(:,i)) \r\n    title(brandNames(i)) \r\n    xlabel('Batch Number') \r\n    ylabel('Cups of Popped Popcorn') \r\n<span class=\"keyword\">end<\/span><\/pre>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"384\" class=\"alignnone size-large wp-image-5188\" src=\"https:\/\/blogs.mathworks.com\/racing-lounge\/files\/2021\/02\/Output_12_1-1024x384.png\" alt=\"\" \/><\/p>\n<h1><span data-contrast=\"none\">Understand data\u00a0types<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"none\">Unlike some other languages, neither Python\u00a0<\/span><span data-contrast=\"none\">n<\/span><span data-contrast=\"none\">or MATLAB require declaring a variable<\/span><span data-contrast=\"none\">\u00a0or variable type<\/span><span data-contrast=\"none\">;\u00a0<\/span><span data-contrast=\"none\">a<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">variable\u00a0<\/span><span data-contrast=\"none\">is<\/span><span data-contrast=\"none\">\u00a0created the moment\u00a0<\/span><span data-contrast=\"none\">it\u00a0<\/span><span data-contrast=\"none\">is<\/span><span data-contrast=\"none\">\u00a0assigned\u00a0<\/span><span data-contrast=\"none\">a\u00a0<\/span><span data-contrast=\"none\">value<\/span><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">While\u00a0<\/span><span data-contrast=\"none\">in Python\u00a0<\/span><span data-contrast=\"none\">it is easy to<\/span><span data-contrast=\"none\">\u00a0accidentally<\/span><span data-contrast=\"none\">\u00a0create\u00a0<\/span><i><span data-contrast=\"none\">ints<\/span><\/i><span data-contrast=\"none\">\u00a0and\u00a0<\/span><span data-contrast=\"none\">special constructors\u00a0<\/span><span data-contrast=\"none\">may be\u00a0<\/span><span data-contrast=\"none\">necessary<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">to create numeric arrays,\u00a0<\/span><span data-contrast=\"none\">MATLAB\u2019s default numeric class<\/span><span data-contrast=\"none\">\u00a0is double-precision floating point<\/span><span data-contrast=\"none\">.<\/span><span data-contrast=\"none\">\u00a0In MATLAB,\u00a0<\/span><span data-contrast=\"none\">\u201c1\u201d<\/span><span data-contrast=\"none\">\u00a0and\u00a0<\/span><span data-contrast=\"none\">\u201c1.<\/span><span data-contrast=\"none\">\u201d\u00a0<\/span><span data-contrast=\"none\">are always equal.<\/span><span data-contrast=\"none\">\u00a0Doubles can be complex\u00a0<\/span><span data-contrast=\"none\">and\u00a0<\/span><span data-contrast=\"none\">accept most mathematical operations.<\/span><span data-contrast=\"auto\">\u00a0T<\/span><span data-contrast=\"none\">o view a variable\u2019s data\u00a0<\/span><span data-contrast=\"none\">type,<\/span><span data-contrast=\"none\">\u00a0you could use\u00a0<\/span><i><span data-contrast=\"none\">type<\/span><\/i><span data-contrast=\"none\">\u00a0in Python. In MATLAB we\u00a0<\/span><span data-contrast=\"none\">can<\/span><span data-contrast=\"none\">\u00a0use the\u00a0<\/span><i><span data-contrast=\"none\">whos<\/span><\/i><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">function<\/span><span data-contrast=\"none\">, or<\/span><span data-contrast=\"none\">\u00a0view the variable data type in the\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/workspace.html\"><span data-contrast=\"auto\">MATLAB Workspace Browser<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"codeinput\">whos <span class=\"string\">'popcorn'<\/span><\/pre>\n<pre class=\"codeoutput\">Name     Size   Bytes   Class   Attributes\r\npopcorn  6x3     144    double \r\n<\/pre>\n<p><span data-contrast=\"none\">MATLAB has built-in functions<\/span><span data-contrast=\"none\">\u00a0for converting data types. Let\u2019s explore\u00a0<\/span><span data-contrast=\"none\">one<\/span><span data-contrast=\"none\">\u00a0of these functions\u00a0<\/span><i><span data-contrast=\"none\">array2table<\/span><\/i><span data-contrast=\"none\">\u00a0to\u00a0<\/span><span data-contrast=\"none\">create a table and label the<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">columns of\u00a0<\/span><span data-contrast=\"auto\">our popcorn dataset.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">brandNames = [\"Gourmet\",\"National\",\"Generic\"]; \r\narray2table(popcorn,'VariableNames',brandNames)<\/pre>\n<pre class=\"codeoutput\"> ans = \r\n   6x3 <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/table.html\">table<\/a>\r\n     <strong> Gourmet    National    Generic\r\n      _______    ________    ________<\/strong>\r\n        5.5        4.5         3.5  \r\n        5.5        4.5          4  \r\n         6          4           3  \r\n        6.5         5           4  \r\n         7         5.5          5  \r\n         7          5          4.5 \r\n<\/pre>\n<p><span data-contrast=\"none\">I<\/span><span data-contrast=\"none\">n MATLAB,\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/logical.html?s_tid=srchtitle\"><span data-contrast=\"auto\">logical data<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">type<\/span><\/a><span data-contrast=\"auto\">\u00a0can\u00a0<\/span><span data-contrast=\"none\">have value \u201c0\u201d<\/span><span data-contrast=\"none\">\u00a0for false<\/span><span data-contrast=\"none\">\u00a0or \u201c1<\/span><span data-contrast=\"none\">\u201d<\/span><span data-contrast=\"none\">\u00a0for true<\/span><span data-contrast=\"none\">.<\/span><span data-contrast=\"none\">\u00a0Let\u2019s explore this behavior\u00a0<\/span><span data-contrast=\"none\">by<\/span><span data-contrast=\"none\">\u00a0utilizing logical indexing\u00a0<\/span><span data-contrast=\"none\">and a conditional statement<\/span><span data-contrast=\"none\">\u00a0to determine if the Gourmet brand\u00a0<\/span><span data-contrast=\"none\">kernels<\/span><span data-contrast=\"none\">\u00a0produced the largest average batch<\/span><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\">brandAvg = mean(popcorn)\r\n(brandAvg(1)&gt;brandAvg(2))&amp;&amp;(brandAvg(1)&gt;brandAvg(3))<\/pre>\n<pre class=\"codeoutput\">brandAvg = \r\n    6.25   4.75   4\r\n\r\nans = \r\n   <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/logical.html\">logical<\/a>\r\n      1<\/pre>\n<p><span class=\"TextRun Highlight SCXW143995970 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW143995970 BCX0\" data-ccp-charstyle=\"normaltextrun\" data-ccp-charstyle-defn=\"{&quot;ObjectId&quot;:&quot;3a9152a3-0b91-4cf8-9122-49c03ae8b900|28&quot;,&quot;Properties&quot;:[134233614,&quot;true&quot;,201340122,&quot;1&quot;,469775450,&quot;normaltextrun&quot;,469778129,&quot;normaltextrun&quot;,469778324,&quot;Default Paragraph Font&quot;],&quot;ClassId&quot;:1179649}\">Other data type options such as character, date, categorical array, structure, and cell array can be\u00a0<\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2 SCXW143995970 BCX0\" data-ccp-charstyle=\"normaltextrun\">explored<\/span><span class=\"NormalTextRun SCXW143995970 BCX0\" data-ccp-charstyle=\"normaltextrun\">\u00a0<\/span><\/span><a class=\"Hyperlink SCXW143995970 BCX0\" href=\"https:\/\/www.mathworks.com\/help\/matlab\/data-types.html?s_tid=CRUX_lftnav\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"TextRun Highlight Underlined SCXW143995970 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW143995970 BCX0\" data-ccp-charstyle=\"Hyperlink\">in the MATLAB data types documentation<\/span><\/span><\/a><span class=\"TextRun Highlight SCXW143995970 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW143995970 BCX0\" data-ccp-charstyle=\"normaltextrun\">\u00a0or in the\u00a0<\/span><\/span><span class=\"TextRun Highlight SCXW143995970 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW143995970 BCX0\" data-ccp-charstyle=\"normaltextrun\">table below<\/span><\/span><span class=\"TextRun Highlight SCXW143995970 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW143995970 BCX0\" data-ccp-charstyle=\"normaltextrun\">.<\/span><\/span><span class=\"EOP SCXW143995970 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240,&quot;469777462&quot;:[916,1832,2748,3664,4580,5496,6412,7328,8244,9160,10076,10992,11908,12824,13740,14656],&quot;469777927&quot;:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],&quot;469777928&quot;:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}\">\u00a0<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-5198\" src=\"https:\/\/blogs.mathworks.com\/racing-lounge\/files\/2021\/02\/Table_4_1.png\" alt=\"\" width=\"500\" height=\"538\" \/><\/p>\n<h1 aria-level=\"1\"><span data-contrast=\"none\">Implement looping\u00a0behavior<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"none\">In programming, loops repeat a sequence until a specified condition is met. Often, loops resize arrays and require MATLAB to continuously look<\/span><span data-contrast=\"none\">\u00a0for larger contiguous blocks of memor<\/span><span data-contrast=\"none\">y.\u00a0<\/span><span data-contrast=\"none\">One trick\u00a0<\/span><span data-contrast=\"none\">to improve code execution time\u00a0<\/span><span data-contrast=\"none\">when using loops and conditional statements in MATLAB\u00a0is\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/preallocating-arrays.html\"><span data-contrast=\"none\">pre-allocation<\/span><\/a><span data-contrast=\"none\">, or establishing the maximum amount of space required for the array<\/span><span data-contrast=\"none\">. To pre-allocate an array, create an array with the intended resulting<\/span><span data-contrast=\"none\">\u00a0size and then replace the elements, rather than changing the array size with each iteration.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span> <span data-contrast=\"none\">Let\u2019s<\/span><span data-contrast=\"none\">\u00a0find the\u00a0<\/span><span data-contrast=\"none\">kernel\u00a0<\/span><span data-contrast=\"none\">brand w<\/span><span data-contrast=\"none\">ith the highest yield f<\/span><span data-contrast=\"none\">or\u00a0<\/span><span data-contrast=\"none\">each\u00a0<\/span><span data-contrast=\"none\">batc<\/span><span data-contrast=\"none\">h.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"&quot;language-matlab'\"><span class=\"comment\">%First, pre-allocate the bestBrand array and change the data type to categorical<\/span>\r\nbestBrand = zeros(6,1); \r\nbestBrand = categorical(bestBrand); \r\n<span class=\"comment\">% For each row, check which column contains the maximum yield <\/span>\r\n<span class=\"keyword\">for<\/span> i = 1:6 \r\n    <span class=\"keyword\">if<\/span> popcorn(i,1) == max(popcorn(i,:)) \r\n        bestBrand(i) = 'Gourmet'; \r\n    <span class=\"keyword\">end<\/span> \r\n    <span class=\"keyword\">if<\/span> popcorn(i,2) == max(popcorn(i,:)) \r\n        bestBrand(i) = 'National'; \r\n    <span class=\"keyword\">end<\/span> \r\n    <span class=\"keyword\">if<\/span> popcorn(i,3) == max(popcorn(i,:)) \r\n        bestBrand(i) = 'Generic'; \r\n    <span class=\"keyword\">end<\/span> \r\n<span class=\"keyword\">end<\/span> \r\nbestBrand<\/pre>\n<pre class=\"codeoutput\">bestBrand = \r\n  6x1 <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/ref\/categorical.html\">categorical <\/a>array\r\n\r\n    Gourmet\r\n    Gourmet\r\n    Gourmet\r\n    Gourmet\r\n    Gourmet\r\n    Gourmet<\/pre>\n<p><span data-contrast=\"none\">From this analysis, we see the Gourmet brand produced the most popcorn in\u00a0<\/span><span data-contrast=\"none\">all six<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">batch<\/span><span data-contrast=\"none\">es<\/span><span data-contrast=\"none\">.\u00a0<\/span><span data-contrast=\"none\">While this method\u00a0<\/span><span data-contrast=\"none\">provided the<\/span><span data-contrast=\"none\">\u00a0desired result<\/span><span data-contrast=\"none\">,\u00a0<\/span><span data-contrast=\"none\">the code is lengthy and takes a long time to execute. How could we find the best brand more efficiently?<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">M<\/span><span data-contrast=\"none\">ATLAB often\u00a0<\/span><span data-contrast=\"none\">doesn\u2019t require writing loops as it is \u201cvectorized\u201d.<\/span><span data-contrast=\"none\">\u00a0MATLAB is optimized for matri<\/span><span data-contrast=\"none\">x\u00a0<\/span><span data-contrast=\"none\">and vector<\/span><span data-contrast=\"none\">\u00a0operations<\/span><span data-contrast=\"none\">,\u00a0<\/span><span data-contrast=\"none\">so\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/vectorization.html\"><span data-contrast=\"auto\">writing vectorized code<\/span><\/a><span data-contrast=\"auto\">\u00a0can improve code readability, speed, and memory<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">We can<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">vectorize our loop by calling\u00a0<\/span><i><span data-contrast=\"auto\">max<\/span><\/i><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">on the entire\u00a0<\/span><i><span data-contrast=\"auto\">popcorn<\/span><\/i><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">array\u00a0<\/span><span data-contrast=\"none\">rather than<\/span><span data-contrast=\"none\">\u00a0one row at a time.<\/span><span data-contrast=\"none\">\u00a0The\u00a0<\/span><i><span data-contrast=\"none\">max<\/span><\/i><span data-contrast=\"none\">\u00a0function returns multiple outputs,\u00a0<\/span><span data-contrast=\"none\">so we will capture these in square brackets.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<pre class=\"language-matlab\"><span class=\"comment\">% To return the max of each row as a column vector, we specify the second dimension in max(A,[],dim) <\/span>\r\n[maxVal,index] = max(popcorn,[],2); \r\nbrandNames(index)<\/pre>\n<pre class=\"codeoutput\">ans = \r\n   1x6 <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2020b\/matlab\/ref\/string.html\">string <\/a>array\r\n     \"Gourmet\"  \"Gourmet\"  \"Gourmet\"  \"Gourmet\"  \"Gourmet\"  \"Gourmet\"<\/pre>\n<p><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\" data-ccp-charstyle-defn=\"{&quot;ObjectId&quot;:&quot;3a9152a3-0b91-4cf8-9122-49c03ae8b900|28&quot;,&quot;Properties&quot;:[134233614,&quot;true&quot;,201340122,&quot;1&quot;,469775450,&quot;normaltextrun&quot;,469778129,&quot;normaltextrun&quot;,469778324,&quot;Default Paragraph Font&quot;],&quot;ClassId&quot;:1179649}\">Check out the table below\u00a0<\/span><\/span><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\">for<\/span><\/span><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\">\u00a0more looping behaviors<\/span><\/span><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\">\u00a0and conditional statements<\/span><\/span><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\">\u00a0t<\/span><\/span><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\">o<\/span><\/span><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\">\u00a0incorporate in MATLAB<\/span><\/span><span class=\"TextRun Highlight SCXW104190129 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW104190129 BCX0\" data-ccp-charstyle=\"normaltextrun\">.<\/span><\/span><span class=\"EOP SCXW104190129 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-5212\" src=\"https:\/\/blogs.mathworks.com\/racing-lounge\/files\/2021\/02\/2021-02-18_18-25-19-665x1024.jpg\" alt=\"\" width=\"400\" height=\"616\" \/><\/p>\n<h1><span data-contrast=\"none\">Define a custom\u00a0class<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"none\">W<\/span><span data-contrast=\"none\">e\u00a0<\/span><span data-contrast=\"none\">can\u00a0use<\/span><span data-contrast=\"auto\">\u00a0<\/span><a title=\"https:\/\/www.mathworks.com\/discovery\/object-oriented-programming.html (link no longer works)\"><span data-contrast=\"auto\">object-oriented programming<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">when building an application to group\u00a0<\/span><span data-contrast=\"auto\">parameters (properties) and functions (methods) into one class.<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"none\">While Python classes can be defined anywhere, MATLAB class<\/span><span data-contrast=\"none\">es are created<\/span><span data-contrast=\"none\">\u00a0in a class definitio<\/span><span data-contrast=\"none\">n<\/span><span data-contrast=\"none\">\u00a0file<\/span><span data-contrast=\"none\">.<\/span><span data-contrast=\"none\">\u00a0MATLAB classes can be useful to have more control over what can and cannot be done to an object, such as defining a property as \u201cconstant\u201d to disable modification.<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">Check<\/span><span data-contrast=\"none\">\u00a0out<\/span><span data-contrast=\"none\">\u00a0a<\/span><span data-contrast=\"none\">n<\/span><span data-contrast=\"none\">\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/company\/newsletters\/articles\/introduction-to-object-oriented-programming-in-matlab.html\"><span data-contrast=\"auto\">example utilizing sensor array data<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"none\">or follow the class framework below.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"language-matlab\"> <span class=\"comment\">% Saved as file MyClass.m, class name must match file name <\/span>\r\n<span class=\"keyword\">classdef<\/span> MyClass \r\n      <span class=\"keyword\">properties<\/span>\r\n            prop \r\n      <span class=\"keyword\">end<\/span> \r\n      <span class=\"keyword\">methods<\/span> \r\n            <span class=\"keyword\">function<\/span> obj = MyClass(val) \r\n            <span class=\"keyword\">end<\/span> \r\n      <span class=\"keyword\">end<\/span> \r\n<span class=\"keyword\">end <\/span><\/pre>\n<p><span data-contrast=\"none\">The<\/span><span data-contrast=\"none\">\u00a0above<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">class framework\u00a0<\/span><span data-contrast=\"none\">shows the\u00a0<\/span><span data-contrast=\"none\">MATLAB default<\/span><span data-contrast=\"none\">\u00a0copy<\/span><span data-contrast=\"none\">&#8211;<\/span><span data-contrast=\"none\">by<\/span><span data-contrast=\"none\">&#8211;<\/span><span data-contrast=\"none\">write<\/span><span data-contrast=\"auto\">\u00a0value class<\/span><span data-contrast=\"auto\">, as opposed to a copy-by-reference class.\u00a0<\/span><span data-contrast=\"auto\">Check\u00a0out\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_oop\/comparing-handle-and-value-classes.html\"><span data-contrast=\"auto\">this page<\/span><\/a><span data-contrast=\"auto\">\u00a0outlining the differences between these two class types<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n<h1><span data-contrast=\"none\">Closing thoughts<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"auto\">We hope\u00a0<\/span><span data-contrast=\"auto\">this information paints a<\/span><span data-contrast=\"auto\">\u00a0picture of the functional\u00a0<\/span><span data-contrast=\"auto\">similarities and\u00a0<\/span><span data-contrast=\"auto\">differences<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">between<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">Python and MATLAB<\/span><span data-contrast=\"auto\">\u00a0languages.\u00a0<\/span><span data-contrast=\"auto\">Hopef<\/span><span data-contrast=\"auto\">u<\/span><span data-contrast=\"auto\">lly you are finding MATLAB easy to learn and can<\/span><span data-contrast=\"auto\">\u00a0us<\/span><span data-contrast=\"auto\">e this information to get starte<\/span><span data-contrast=\"auto\">d<\/span><span data-contrast=\"auto\">.<\/span><span data-contrast=\"auto\">\u00a0For more\u00a0<\/span><span data-contrast=\"auto\">introductory resources,<\/span><span data-contrast=\"auto\">\u00a0check out our two\u00a0hour\u00a0<\/span><a href=\"https:\/\/www.mathworks.com\/learn\/tutorials\/matlab-onramp.html\"><span data-contrast=\"auto\">MATLAB Onramp<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">tutorial, read\u00a0<\/span><span data-contrast=\"auto\">\u201c<\/span><a href=\"https:\/\/www.mathworks.com\/help\/matlab\/getting-started-with-matlab.html\"><span data-contrast=\"auto\">Get Started with MATLAB<\/span><\/a><span data-contrast=\"auto\">&#8220;<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0or dive into the MathWorks<\/span><span data-contrast=\"auto\">\u00a0documentation and<\/span><span data-contrast=\"auto\">\u00a0articles linked throughout this blog.\u00a0<\/span><span data-contrast=\"auto\">Be sure to comment below\u00a0<\/span><span data-contrast=\"auto\">or use your preferred social media platform to share what you\u2019re working on and ask any question<\/span><span data-contrast=\"auto\">s<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:120,&quot;335559739&quot;:120,&quot;335559740&quot;:240,&quot;335559745&quot;:50,&quot;335559746&quot;:50}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/student-lounge\/files\/2021\/02\/Image_1-1.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div>\n<p>Today\u2019s blog is written by Jennifer Rebbin, Jennifer is an Application Support Engineer with the Engineering Development Group at MathWorks. In this blog, she shares some important concepts that will&#8230; <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/student-lounge\/2021\/02\/19\/introduction-to-matlab-for-python-users\/\">read more >><\/a><\/p>\n","protected":false},"author":165,"featured_media":5180,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[365,6,10],"tags":[88,470,431],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts\/5066"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/users\/165"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/comments?post=5066"}],"version-history":[{"count":62,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts\/5066\/revisions"}],"predecessor-version":[{"id":5236,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts\/5066\/revisions\/5236"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/media\/5180"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/media?parent=5066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/categories?post=5066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/tags?post=5066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}