{"id":62,"date":"2009-08-11T15:46:43","date_gmt":"2009-08-11T15:46:43","guid":{"rendered":"https:\/\/blogs.mathworks.com\/seth\/2009\/08\/11\/how-many-blocks-are-in-that-model\/"},"modified":"2009-08-11T15:48:45","modified_gmt":"2009-08-11T15:48:45","slug":"how-many-blocks-are-in-that-model","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/simulink\/2009\/08\/11\/how-many-blocks-are-in-that-model\/","title":{"rendered":"How Many Blocks are in that Model?"},"content":{"rendered":"<p>My colleague Sam and I wanted to find an example model with\r\nabout 10,000 blocks.\u00a0 I suggested the HL-20 model from the Aerospace Blockset, <span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>asbhl20.mdl<\/span>.\u00a0\r\nSam decided to measure the total number of blocks by running <span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'><a\r\nhref=\"https:\/\/www.mathworks.com\/help\/releases\/R2009a\/toolbox\/simulink\/slref\/sldiagnostics.html\">sldiagnostics<\/a><\/span>:<\/p>\r\n\r\n\r\n\r\n<code><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>&gt;&gt; [t,s] = sldiagnostics(<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>'asbhl20'<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>,<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>'CountBlocks'<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>);<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>s(1)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>ans = <\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 isMask: 0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0\u00a0\u00a0 type: <\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>'asbhl20 Total\r\nblocks'<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0\u00a0 count: 5700<\/span><\/code>\r\n\r\n\r\n\r\n<p>Sam quickly sent me a message saying that the HL-20 model only\r\nhad 5700 blocks.\u00a0 What gives?<\/p>\r\n\r\n\r\n\r\n<p><strong>What is SLDIAGNOSTICS?<\/strong><\/p>\r\n\r\n\r\n\r\n<p>First, let us discuss a little history of <span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>sldiagnostics<\/span>.\u00a0\r\nOver the years, Simulink developers have worked with many customers to learn\r\nabout their modeling styles and assist in debugging problems.\u00a0 Unfortunately some\r\ncustomers are unable to share their models because they might contain\r\nproprietary information.\u00a0 The solution these developers created were a series\r\nof scripts that would quickly gather information about a model without any model\r\nalgorithm information. These collected scripts then became the <span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>sldiagnostics<\/span>\r\nfunction.\u00a0 Because the output of these scripts was generally devoid of any\r\nproprietary data, even customers who could not share their models were able to provide\r\nthe diagnostic information instead.<\/p>\r\n\r\n\r\n\r\n<p>Most of the checks done by <span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>sldiagnostics<\/span> help you gather an\r\nunderstanding of the model as a whole.\u00a0 This is a great help in learning about\r\nmodels rather than having to browse through every system one-by-one.\u00a0 <\/p>\r\n\r\n\r\n\r\n<p><strong>CountBlocks<\/strong><\/p>\r\n\r\n\r\n\r\n<p>The diagnostic information Sam gathered was the output of\r\nCountBlocks.\u00a0 Here is a part of the text report for the HL-20 model.<\/p>\r\n\r\n\r\n\r\n<code><span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>Finished counting blocks in 'asbhl20'.<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>Found 5700 blocks.<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>&nbsp;<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0asbhl20 Total blocks :\u00a0 5700<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Abs :\u00a0\u00a0\u00a0 16<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ActionPort :\u00a0\u00a0\u00a0 11<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Assertion :\u00a0\u00a0\u00a0\u00a0 2<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Bias :\u00a0\u00a0\u00a0\u00a0 6<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0BusCreator :\u00a0\u00a0\u00a0 46<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0BusSelector :\u00a0\u00a0 126<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;snip&gt;<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Inport :\u00a0 1175<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0InportShadow :\u00a0\u00a0\u00a0 49<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Integrator :\u00a0\u00a0\u00a0 43<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0Interpolation_n-D :\u00a0\u00a0\u00a0\u00a0 1<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Logic :\u00a0\u00a0\u00a0\u00a0 6<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Lookup :\u00a0\u00a0\u00a0\u00a0 6<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Lookup_n-D :\u00a0\u00a0\u00a0\u00a0 6<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Math :\u00a0\u00a0\u00a0 59<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Memory :\u00a0\u00a0\u00a0\u00a0 4<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Merge :\u00a0\u00a0\u00a0\u00a0 4<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0MinMax :\u00a0\u00a0\u00a0\u00a0 4<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0<span style='background:yellow'>ModelReference\r\n:\u00a0\u00a0\u00a0\u00a0 9<\/span><\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0MultiPortSwitch :\u00a0\u00a0\u00a0\u00a0 1<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Mux :\u00a0\u00a0 141<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Outport :\u00a0\u00a0 669<\/span><br>\r\n\r\n<span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0&lt;snip&gt;<\/span><\/code>\r\n\r\n\r\n\r\n<p><strong>HL-20 Includes Model Reference<\/strong><\/p>\r\n\r\n\r\n\r\n<p>The HL-20 model includes 9 ModelReference blocks.\u00a0 (I introduced\r\nsome of the basics of <a\r\nhref=\"https:\/\/blogs.mathworks.com\/seth\/2008\/12\/05\/the-answer-for-large-scale-modeling-model-reference\/\">model\r\nreference a previous post<\/a>.)\u00a0 You can see the hierarchy of the model in the\r\nDependency Viewer instance view.<\/p>\r\n\r\n\r\n\r\n<p><img decoding=\"async\" src=\"https:\/\/blogs.mathworks.com\/images\/seth\/2009Q3\/asbhl20_depview.png\" alt=\"The model reference hierarchy for the ASBHL20 model from the Aerospace Blockset.\"><\/p>\r\n\r\n\r\n\r\n<p>When I think about a model, I imagine the net collected functionality\r\nrepresented by it.\u00a0 I think the number of blocks used to create that model is a\r\nsimple measure for how much functionality\/algorithm there is.\u00a0 Model reference\r\nblocks contain the functionality of the entire model that they reference,\r\nhowever, <span style='font-size:12.0pt;font-family:\"Courier New\";color:black'>sldiagnostics<\/span>\r\ncounts ever Model Reference block as only one block.<\/p>\r\n\r\n\r\n\r\n<p>The measure I am really looking for is the subsystem\r\nequivalent implementation of all the blocks in the model.\u00a0 To get this for the\r\nHL-20 model, you actually need to count the blocks inside each model referenced\r\nand multiply by the number of instances.\u00a0 I wrote a MATLAB function to do this:<\/p>\r\n\r\n\r\n\r\n<code><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>function<\/span><span style='font-size:\r\n12.0pt;font-family:\"Courier New\";color:black'> totalBlocks =\r\nmdlrefCountBlocks(mdl)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>% mdlrefCountBlocks Count the\r\nsubsystem equivalent number of blocks <\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>% in a model reference hierarchy.<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>&nbsp;<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>% Copyright 2009 The MathWorks,\r\nInc<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\"'>&nbsp;<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>%% Open the model<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>open_system(mdl)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>%% Get instance information<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>[mDep,mInst] = find_mdlrefs(mdl);<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>% Open dependent models<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>for<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'> i = 1:length(mDep)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 load_system(mDep{i})<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>end<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>\u00a0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>%% Count the number of instances\r\nof each dependency<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>mCount = zeros(size(mDep));<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>mCount(end) = 1; <\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:forestgreen'>% Last\r\nelement is the top model, only one instance<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>for<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'> i = 1:length(mInst)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 mod = get_param(mInst{i},<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>'ModelName'<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>);<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 mCount = mCount + strcmp(mod,mDep);<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>end<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>%%<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>for<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'> i = 1:length(mDep)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 disp([num2str(mCount(i)) <\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>' instances of\r\n'<\/span><span style='font-size:12.0pt;font-family:\"Courier New\";color:black'>\r\nmDep{i}])<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>end<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>disp(<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:#A020F0'>' '<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>%% Loop over dependencies, get\r\nnumber of blocks<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>s = cell(size(mDep));<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>for<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'> i = 1:length(mDep)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 [t,s{i}] = sldiagnostics(mDep{i},<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>'CountBlocks'<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>);<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 disp([mDep{i} <\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>' has '<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'> num2str(s{i}(1).count)\r\n<\/span><span style='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>'\r\nblocks'<\/span><span style='font-size:12.0pt;font-family:\"Courier New\";\r\ncolor:black'>])<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>end<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>\u00a0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:forestgreen'>%% Multiply number of blocks,\r\ntimes model count, add to total<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>totalBlocks = 0;<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>for<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'> i = 1:length(mDep)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0\u00a0\u00a0 totalBlocks = totalBlocks +\r\ns{i}(1).count * mCount(i);<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>end<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:blue'>\u00a0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>disp(<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:#A020F0'>' '<\/span><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>)<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>disp([<\/span><span style='font-size:\r\n12.0pt;font-family:\"Courier New\";color:#A020F0'>'Total blocks: '<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>\r\nnum2str(totalBlocks)])<\/span><\/code>\r\n\r\n\r\n\r\n<p><strong>Total Blocks<\/strong><\/p>\r\n\r\n\r\n\r\n<p>Here are the results of running this function:<\/p>\r\n\r\n\r\n\r\n<code><span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>&gt;&gt; total = mdlrefCountBlocks(<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:#A020F0'>'asbhl20'<\/span><span\r\nstyle='font-size:12.0pt;font-family:\"Courier New\";color:black'>);<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>3 instances of asbhl20_FCSApp<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>3 instances of asbhl20_FDIRApp<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>3 instances of asbhl20_GuidanceApp<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>1 instances of asbhl20<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>asbhl20_FCSApp has 115 blocks<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>asbhl20_FDIRApp has 1248 blocks<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>asbhl20_GuidanceApp has 388 blocks<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>asbhl20 has 5700 blocks<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>\u00a0<\/span><br>\r\n\r\n<span style='font-size:12.0pt;\r\nfont-family:\"Courier New\";color:black'>Total blocks: 10953<\/span><\/code>\r\n\r\n\r\n\r\n<p><strong>Now it\u2019s your turn<\/strong><\/p>\r\n\r\n\r\n\r\n<p>In the end, we can see the HL-20 model has almost 11K\r\nblocks.\u00a0 Do you use model reference? How many total blocks are in the hierarchy\r\nof your largest model?\u00a0 Use the script above to gather this data and post it in\r\nthe <a href=\"https:\/\/blogs.mathworks.com\/seth\/?p=62&amp;#comment\">comments here<\/a>.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>My colleague Sam and I wanted to find an example model with\r\nabout 10,000 blocks.\u00a0 I suggested the HL-20 model from the Aerospace Blockset, asbhl20.mdl.\u00a0\r\nSam decided to measure the total number of... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/simulink\/2009\/08\/11\/how-many-blocks-are-in-that-model\/\">read more >><\/a><\/p>","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,43,7,66],"tags":[456,441,99],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/62"}],"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\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":0,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/simulink\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}