{"id":201,"date":"2009-10-09T15:46:08","date_gmt":"2009-10-09T15:46:08","guid":{"rendered":"https:\/\/blogs.mathworks.com\/loren\/2009\/10\/09\/handling-discrete-data\/"},"modified":"2009-10-05T15:47:55","modified_gmt":"2009-10-05T15:47:55","slug":"handling-discrete-data","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/loren\/2009\/10\/09\/handling-discrete-data\/","title":{"rendered":"Handling Discrete Data"},"content":{"rendered":"<div xmlns:mwsh=\"https:\/\/www.mathworks.com\/namespace\/mcode\/v1\/syntaxhighlight.dtd\" class=\"content\">\r\n   <introduction>\r\n      <p>Discrete data arise in many applications and the data may be numeric, or non-numeric, often referred to as categorical. Not\r\n         all data are strictly numeric, and other characteristics can be pertinent or useful. You can use a variety of techniques and\r\n         data representations in MATLAB for storing and manipulation discrete data.\r\n      <\/p>\r\n   <\/introduction>\r\n   <h3>Contents<\/h3>\r\n   <div>\r\n      <ul>\r\n         <li><a href=\"#1\">Example: Periodic Table of Elements<\/a><\/li>\r\n         <li><a href=\"#3\">Discrete Data Representation Options<\/a><\/li>\r\n         <li><a href=\"#4\">logical<\/a><\/li>\r\n         <li><a href=\"#5\">String or Coded Integer<\/a><\/li>\r\n         <li><a href=\"#8\">nominal Array<\/a><\/li>\r\n         <li><a href=\"#12\">ordinal Array<\/a><\/li>\r\n         <li><a href=\"#16\">Integer<\/a><\/li>\r\n         <li><a href=\"#17\">Going All the Way<\/a><\/li>\r\n         <li><a href=\"#18\">Your Data or Experiment<\/a><\/li>\r\n      <\/ul>\r\n   <\/div>\r\n   <h3>Example: Periodic Table of Elements<a name=\"1\"><\/a><\/h3>\r\n   <p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Periodic_table\">The periodic table of elements<\/a> provides a rich basis for this discussion.  If you remember your chemistry class (I did, very imperfectly), you probably\r\n      remember that each element has a fixed number of protons associated with it, also called the atomic number.  You might also\r\n      remember that the periodic table is arranged so that certain columns of elements have certain characteristics.  For example,\r\n      apart from Hydrogen, the left-most column holds the alkali metals (such as sodium and potassium) and the left side generally\r\n      contains metallic elements.  The right-most column holds Noble gases, with the next column to their left holding halogens.\r\n      Nonmetals are towards the right side of the table.  At standard temperature and pressure (known as STP), elements are in one\r\n      of three states: solid, liquid, or gas.\r\n   <\/p>\r\n   <p>We've just talked about 3 different things:<\/p>\r\n   <li>atomic number (number of protons in the nucleus), positive integers and therefore numeric<\/li>\r\n   <li>solid, liquid, gas states, which can be considered ordinal (that is, solid &lt; liquid &lt; gas)<\/li>\r\n   <li>element categories include the metals, nonmetals, etc., and these are simply labels or names, and therefore nominal (notice\r\n      how these categories aren't strictly columnar in the periodic table)\r\n   <\/li>\r\n   <h3>Discrete Data Representation Options<a name=\"3\"><\/a><\/h3>\r\n   <p>I will try to use the periodic table example for each of the possible discrete data representations, but some of these will\r\n      be forced examples.\r\n   <\/p>\r\n   <h3>logical<a name=\"4\"><\/a><\/h3>\r\n   <p>You could imagine use a <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2009b\/techdoc\/ref\/logical.html\"><tt>logical<\/tt><\/a> variable to indicate elements that are in the Noble category as <tt>true<\/tt> and <tt>false<\/tt> for the remainder.\r\n   <\/p>\r\n   <h3>String or Coded Integer<a name=\"5\"><\/a><\/h3>\r\n   <p><tt>logical<\/tt> variables are fine if you are representing exactly two possible categories.  However, looking at the periodic table, you\r\n      see that I collapsed a subset of categories into \"not Noble\" (<tt>false<\/tt>). Rather than collapsing the set of categories into Noble and not Noble, the entire collection might be better represented\r\n      as integers that are arbitrarily given meaning, or by strings.  For example, I could code alkali metals as <tt>'alkali metals'<\/tt> or as <tt>1<\/tt>, and so on.  The first 3 elements of the table would be represented with <tt>[8 10 1]<\/tt> or as <tt>{'other nonmetals' 'noble gases' 'alkali metals'}<\/tt>.\r\n   <\/p>\r\n   <p>Coded integers are useful for doing comparisons, for example, subsetting the data, and are memory-efficient. However, integers\r\n      can cause you some mental overhead trying to remember the mapping between them and their labels.\r\n   <\/p>\r\n   <p>Strings are good for representing the data in a readable form, but are harder to manipulate, especially for an ordered list\r\n      such as phase states.  Also you may prefer to use numeric type operations such as <tt>==<\/tt>, <tt>~=<\/tt>, and <tt>&lt;<\/tt> since they are more direct and show intent.  In addition, strings take more memory, especially when your data comprise many\r\n      repetitions of the same value.\r\n   <\/p>\r\n   <h3>nominal Array<a name=\"8\"><\/a><\/h3>\r\n   <p>You have additional choices with <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2009b\/toolbox\/stats\/nominal.html\"><tt>nominal<\/tt><\/a> and <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2009b\/toolbox\/stats\/ordinal.html\"><tt>ordinal<\/tt><\/a> arrays from <a href=\"https:\/\/www.mathworks.com\/products\/statistics\/\">Statistics Toolbox<\/a>.\r\n   <\/p>\r\n   <p>Let's imagine that we create an array representing the element categories by atomic number.  The first 10 elements of this\r\n      array look like this. I collapse some of the traditional categories for brevity.\r\n   <\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">catLabels = {<span style=\"color: #A020F0\">'metals'<\/span>, <span style=\"color: #A020F0\">'metalloids'<\/span>,<span style=\"color: #A020F0\">'other nonmetals'<\/span>,<span style=\"color: #A020F0\">'halogens'<\/span>, <span style=\"color: #0000FF\">...<\/span>\r\n    <span style=\"color: #A020F0\">'noble gases'<\/span>, <span style=\"color: #A020F0\">'unknown'<\/span>};\r\nelemCats = nominal([3 5 1 1 2 3 3 3 4 5]', catLabels, 1:length(catLabels))\r\nelemNames = {<span style=\"color: #A020F0\">'hydrogen'<\/span>,<span style=\"color: #A020F0\">'helium'<\/span>,<span style=\"color: #A020F0\">'lithium'<\/span>,<span style=\"color: #A020F0\">'beryllium'<\/span>,<span style=\"color: #A020F0\">'boron'<\/span>, <span style=\"color: #0000FF\">...<\/span>\r\n    <span style=\"color: #A020F0\">'carbon'<\/span>,<span style=\"color: #A020F0\">'nitrogen'<\/span>,<span style=\"color: #A020F0\">'oxygen'<\/span>,<span style=\"color: #A020F0\">'fluorine'<\/span>,<span style=\"color: #A020F0\">'neon'<\/span>}';<\/pre><pre style=\"font-style:oblique\">elemCats = \r\n     other nonmetals \r\n     noble gases \r\n     metals \r\n     metals \r\n     metalloids \r\n     other nonmetals \r\n     other nonmetals \r\n     other nonmetals \r\n     halogens \r\n     noble gases \r\n\r\n<\/pre><p>Here is the list of all possible values for the categories.  Notice that this nominal array carries that information with\r\n      it. (You can modify this by adding, renaming, and deleting as necessary.)\r\n   <\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">getlabels(elemCats)<\/pre><pre style=\"font-style:oblique\">ans = \r\n  Columns 1 through 5\r\n    'metals'    'metalloids'    'other nonmetals'    'halogens'    'noble gases'\r\n  Column 6\r\n    'unknown'\r\n<\/pre><p>Let's find all the 'other nonmetals' in the list.<\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">nonmets = find(elemCats == <span style=\"color: #A020F0\">'other nonmetals'<\/span>)\r\nelemNames(nonmets)<\/pre><pre style=\"font-style:oblique\">nonmets =\r\n     1\r\n     6\r\n     7\r\n     8\r\nans = \r\n    'hydrogen'\r\n    'carbon'\r\n    'nitrogen'\r\n    'oxygen'\r\n<\/pre><h3>ordinal Array<a name=\"12\"><\/a><\/h3>\r\n   <p>Let's investigate the states of the first 10 elements now.  For some purposes, the states can be regarded as nominal. However,\r\n      they can also be viewed as an ordered set, <tt>solid &lt; liquid &lt; gas<\/tt>.  (At STP, only mercury and bromine are in liquid state.)\r\n   <\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">stLabels = {<span style=\"color: #A020F0\">'solid'<\/span> <span style=\"color: #A020F0\">'liquid'<\/span> <span style=\"color: #A020F0\">'gas'<\/span>};\r\nelemSts = ordinal([3 3 1 1 1 1 3 3 3 3]', stLabels, 1:length(stLabels))<\/pre><pre style=\"font-style:oblique\">elemSts = \r\n     gas \r\n     gas \r\n     solid \r\n     solid \r\n     solid \r\n     solid \r\n     gas \r\n     gas \r\n     gas \r\n     gas \r\n\r\n<\/pre><p>Here is the list of all possible values for the states.<\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">getlabels(elemSts)<\/pre><pre style=\"font-style:oblique\">ans = \r\n    'solid'    'liquid'    'gas'\r\n<\/pre><p>Let's find all the gases in the list.<\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">gases = find(elemSts &gt; <span style=\"color: #A020F0\">'liquid'<\/span>) <span style=\"color: #228B22\">% or == 'gas'<\/span>\r\nelemNames(gases)<\/pre><pre style=\"font-style:oblique\">gases =\r\n     1\r\n     2\r\n     7\r\n     8\r\n     9\r\n    10\r\nans = \r\n    'hydrogen'\r\n    'helium'\r\n    'nitrogen'\r\n    'oxygen'\r\n    'fluorine'\r\n    'neon'\r\n<\/pre><p>Let's sort the element list by state.<\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">[sts, elemNo] = sort(elemSts)\r\n[cellstr(sts) elemNames(elemNo)]<\/pre><pre style=\"font-style:oblique\">sts = \r\n     solid \r\n     solid \r\n     solid \r\n     solid \r\n     gas \r\n     gas \r\n     gas \r\n     gas \r\n     gas \r\n     gas \r\n\r\nelemNo =\r\n     3\r\n     4\r\n     5\r\n     6\r\n     1\r\n     2\r\n     7\r\n     8\r\n     9\r\n    10\r\nans = \r\n    'solid'    'lithium'  \r\n    'solid'    'beryllium'\r\n    'solid'    'boron'    \r\n    'solid'    'carbon'   \r\n    'gas'      'hydrogen' \r\n    'gas'      'helium'   \r\n    'gas'      'nitrogen' \r\n    'gas'      'oxygen'   \r\n    'gas'      'fluorine' \r\n    'gas'      'neon'     \r\n<\/pre><h3>Integer<a name=\"16\"><\/a><\/h3>\r\n   <p>For the given list of elements, the atomic number happens to match exactly with the index into the <tt>elemNames<\/tt> array.  So I only need to create the relevant integer values 1:10 to represent the atomic number. This list is itself clearly\r\n      ordered, and has numerical meaning (unlike <tt>ordinal<\/tt> arrays which are ordered but the spacing between elements has no definition).\r\n   <\/p>\r\n   <h3>Going All the Way<a name=\"17\"><\/a><\/h3>\r\n   <p>To continue this example, you can collect all the information together into a single <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2009b\/toolbox\/stats\/datasetclass.html\"><tt>dataset<\/tt><\/a> array (from Statistics Toolbox).  The advantages include being able to \"index\" by the element name!\r\n   <\/p><pre style=\"background: #F9F7F3; padding: 10px; border: 1px solid rgb(200,200,200)\">atomicNo = (1:length(elemNames))';\r\nperiodicTable = dataset(atomicNo ,elemCats, elemSts, <span style=\"color: #A020F0\">'obsnames'<\/span>, elemNames)<\/pre><pre style=\"font-style:oblique\">periodicTable = \r\n                 atomicNo    elemCats           elemSts\r\n    hydrogen      1          other nonmetals    gas    \r\n    helium        2          noble gases        gas    \r\n    lithium       3          metals             solid  \r\n    beryllium     4          metals             solid  \r\n    boron         5          metalloids         solid  \r\n    carbon        6          other nonmetals    solid  \r\n    nitrogen      7          other nonmetals    gas    \r\n    oxygen        8          other nonmetals    gas    \r\n    fluorine      9          halogens           gas    \r\n    neon         10          noble gases        gas    \r\n<\/pre><h3>Your Data or Experiment<a name=\"18\"><\/a><\/h3>\r\n   <p>Do you have a situation where some of your data can be represented with <tt>nominal<\/tt> or <tt>ordinal<\/tt> arrays?  How do you manage that information now? Let me know by posting <a href=\"https:\/\/blogs.mathworks.com\/loren\/?p=201#respond\">here<\/a>.\r\n   <\/p><script language=\"JavaScript\">\r\n<!--\r\n\r\n    function grabCode_6065953c077a4b1f82ee8f9ed570810b() {\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='6065953c077a4b1f82ee8f9ed570810b ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 6065953c077a4b1f82ee8f9ed570810b';\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        author = 'Loren Shure';\r\n        copyright = 'Copyright 2009 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 author and copyright lines at the bottom if specified.\r\n        if ((author.length > 0) || (copyright.length > 0)) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (author.length > 0) {\r\n                d.writeln('% _' + author + '_');\r\n            }\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      \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_6065953c077a4b1f82ee8f9ed570810b()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n            the MATLAB code \r\n            <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; 7.9<br><\/p>\r\n<\/div>\r\n<!--\r\n6065953c077a4b1f82ee8f9ed570810b ##### SOURCE BEGIN #####\r\n%% Handling Discrete Data\r\n% Discrete data arise in many applications and the data may be numeric, or\r\n% non-numeric, often referred to as categorical. Not all data are strictly\r\n% numeric, and other characteristics can be pertinent or useful. You can\r\n% use a variety of techniques and data representations in MATLAB for\r\n% storing and manipulation discrete data.  \r\n\r\n%% Example: Periodic Table of Elements\r\n% <http:\/\/en.wikipedia.org\/wiki\/Periodic_table The periodic table of elements>\r\n% provides a rich basis for this discussion.  If you remember your\r\n% chemistry class (I did, very imperfectly), you probably remember that \r\n% each element has a fixed number of protons associated with it, also\r\n% called the atomic number.  You might also remember that the periodic\r\n% table is arranged so that certain columns of elements have certain\r\n% characteristics.  For example, apart from Hydrogen, the left-most column\r\n% holds the alkali metals (such as sodium and potassium) and the left side\r\n% generally contains metallic elements.  The right-most column holds Noble\r\n% gases, with the next column to their left holding halogens. Nonmetals are\r\n% towards the right side of the table.  At standard temperature and\r\n% pressure (known as STP), elements are in one of three states:\r\n% solid, liquid, or gas.\r\n%% \r\n% We've just talked about 3 different things:\r\n%\r\n% # atomic number (number of protons in the nucleus), positive integers and\r\n% therefore numeric\r\n% # solid, liquid, gas states, which can be considered ordinal (that is,\r\n% solid < liquid < gas)\r\n% # element categories include the metals, nonmetals, etc., and these are\r\n% simply labels or names, and therefore nominal (notice how these\r\n% categories aren't strictly columnar in the periodic table)\r\n\r\n%% Discrete Data Representation Options\r\n% I will try to use the periodic table example for each of the possible\r\n% discrete data representations, but some of these will be forced examples.\r\n%% logical\r\n% You could imagine use a\r\n% <https:\/\/www.mathworks.com\/help\/releases\/R2009b\/techdoc\/ref\/logical.html |logical|>\r\n% variable to indicate elements that are in the Noble category as |true|\r\n% and |false| for the remainder. \r\n%% String or Coded Integer\r\n% |logical| variables are fine if you are representing exactly two possible\r\n% categories.  However, looking at the periodic table, you see that I\r\n% collapsed a subset of categories into \"not Noble\" (|false|). Rather than\r\n% collapsing the set of categories into Noble and not Noble, the entire\r\n% collection might be better represented as integers that are arbitrarily\r\n% given meaning, or by strings.  For example, I could code alkali metals as\r\n% |'alkali metals'| or as |1|, and so on.  The first 3 elements of the\r\n% table would be represented with |[8 10 1]| or as |{'other nonmetals'\r\n% 'noble gases' 'alkali metals'}|.\r\n%% \r\n% Coded integers are useful for doing comparisons, for example, subsetting\r\n% the data, and are memory-efficient. However, integers can cause you some\r\n% mental overhead trying to remember the mapping between them and their\r\n% labels.   \r\n%%\r\n% Strings are good for representing the data in a readable form, but are\r\n% harder to manipulate, especially for an ordered list such as phase\r\n% states.  Also you may prefer to use numeric type operations such\r\n% as |==|, |~=|, and |<| since they are more direct and show intent.  In\r\n% addition, strings take more memory, especially when your data comprise\r\n% many repetitions of the same value.\r\n%% nominal Array\r\n% You have additional choices with \r\n% <https:\/\/www.mathworks.com\/help\/releases\/R2009b\/toolbox\/stats\/nominal.html |nominal|>\r\n% and\r\n% <https:\/\/www.mathworks.com\/help\/releases\/R2009b\/toolbox\/stats\/ordinal.html |ordinal|>\r\n% arrays from <https:\/\/www.mathworks.com\/products\/statistics\/ Statistics Toolbox>. \r\n\r\n%%\r\n% Let's imagine that we create an array representing the element categories\r\n% by atomic number.  The first 10 elements of this array look like this.\r\n% I collapse some of the traditional categories for brevity.\r\ncatLabels = {'metals', 'metalloids','other nonmetals','halogens', ...\r\n    'noble gases', 'unknown'};\r\nelemCats = nominal([3 5 1 1 2 3 3 3 4 5]', catLabels, 1:length(catLabels))\r\nelemNames = {'hydrogen','helium','lithium','beryllium','boron', ...\r\n    'carbon','nitrogen','oxygen','fluorine','neon'}';\r\n    \r\n%%\r\n% Here is the list of all possible values for the categories.  Notice that\r\n% this nominal array carries that information with it. (You can modify this\r\n% by adding, renaming, and deleting as necessary.)\r\ngetlabels(elemCats)\r\n%%\r\n% Let's find all the 'other nonmetals' in the list.\r\nnonmets = find(elemCats == 'other nonmetals')\r\nelemNames(nonmets)\r\n%% ordinal Array\r\n% Let's investigate the states of the first 10 elements now.  For some\r\n% purposes, the states can be regarded as nominal. However, they can also\r\n% be viewed as an ordered set, |solid < liquid < gas|.  (At STP, only\r\n% mercury and bromine are in liquid state.)\r\nstLabels = {'solid' 'liquid' 'gas'};\r\nelemSts = ordinal([3 3 1 1 1 1 3 3 3 3]', stLabels, 1:length(stLabels))\r\n    \r\n%%\r\n% Here is the list of all possible values for the states. \r\ngetlabels(elemSts)\r\n%%\r\n% Let's find all the gases in the list.\r\ngases = find(elemSts > 'liquid') % or == 'gas'\r\nelemNames(gases)\r\n%%\r\n% Let's sort the element list by state.\r\n[sts, elemNo] = sort(elemSts)\r\n[cellstr(sts) elemNames(elemNo)]\r\n%% Integer\r\n% For the given list of elements, the atomic number happens to match\r\n% exactly with the index into the |elemNames| array.  So I only need to\r\n% create the relevant integer values 1:10 to represent the atomic number.\r\n% This list is itself clearly ordered, and has numerical meaning (unlike\r\n% |ordinal| arrays which are ordered but the spacing between elements has\r\n% no definition).\r\n%% Going All the Way\r\n% To continue this example, you can collect all the information together\r\n% into a single \r\n% <https:\/\/www.mathworks.com\/help\/releases\/R2009b\/toolbox\/stats\/datasetclass.html |dataset|> \r\n% array (from Statistics Toolbox).  The advantages include being able to\r\n% \"index\" by the element name!\r\natomicNo = (1:length(elemNames))';\r\nperiodicTable = dataset(atomicNo ,elemCats, elemSts, 'obsnames', elemNames)\r\n%% Your Data or Experiment\r\n% Do you have a situation where some of your data can be represented with\r\n% |nominal| or |ordinal| arrays?  How do you manage that information now?\r\n% Let me know by posting <https:\/\/blogs.mathworks.com\/loren\/?p=201#respond here>.\r\n\r\n##### SOURCE END ##### 6065953c077a4b1f82ee8f9ed570810b\r\n-->","protected":false},"excerpt":{"rendered":"<p>\r\n   \r\n      Discrete data arise in many applications and the data may be numeric, or non-numeric, often referred to as categorical. Not\r\n         all data are strictly numeric, and other... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/loren\/2009\/10\/09\/handling-discrete-data\/\">read more >><\/a><\/p>","protected":false},"author":39,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,15],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/posts\/201"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/comments?post=201"}],"version-history":[{"count":0,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/posts\/201\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/media?parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/categories?post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/loren\/wp-json\/wp\/v2\/tags?post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}