Main Content

Replace Fitted Curve with Optimized Lookup Table

This example shows how to approximate a fitted curve or surface and generate a lookup table.

In this example, you fit a surface to two-dimensional data then use the Lookup Table Optimizer command line interface to approximate the fitted curve with a lookup table.

Fit Surface to Data

Load the data set sample_dataset, which contains data that shows the relationship between engine speed, fuel rate, and torque.

load sample_dataset

Two variables are created in the workspace. The inputs variable is two-dimensional data. The targets variable is a column vector.

Use the fit function to fit a polynomial surface to these two variables. Specify the second-degree polynomial function to fit as 'poly21'.

f = fit(inputs,targets,'poly21')
f = 
     Linear model Poly21:
     f(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y
     Coefficients (with 95% confidence bounds):
       p00 =        1539  (599.4, 2479)
       p10 =      -89.93  (-126.3, -53.61)
       p01 =      -2.532  (-3.983, -1.08)
       p20 =    -0.02819  (-0.04941, -0.006961)
       p11 =      0.1511  (0.09482, 0.2074)

Plot the fit and the data.

plot(f,inputs,targets)

Figure contains an axes object. The axes object contains 2 objects of type line, surface. One or more of the lines displays its values using only markers

Approximate Surface

Approximate the surface with an optimized lookup table. Create a FunctionApproximation.Problem object and specify the fitted surface curve f as the function to approximate. Set the lower and upper limits to be the range of the input values.

problem = FunctionApproximation.Problem ('f','InputLowerBounds',min(inputs),'InputUpperBounds',max(inputs))
problem = 
  1×1 FunctionApproximation.Problem with properties:

    FunctionToApproximate: [1×1 sfit]
           NumberOfInputs: 2
          NumberOfOutputs: 1
               InputTypes: ["numerictype('double')"    "numerictype('double')"]
         InputLowerBounds: [14.4000 576.2000]
         InputUpperBounds: [77.5000 661.5000]
               OutputType: "numerictype('double')"
                  Options: [1×1 FunctionApproximation.Options]

You can edit the FunctionApproximation.Options object to specify additional constraints to use in the lookup table optimization process. Specify the word lengths and the maximum time to find a solution.

problem.Options.WordLengths = [8,32];
problem.Options.MaxTime = 240;

Use the solve method to create an optimized lookup table approximation. The solve method returns a FunctionApproximation.LUTSolution object.

solution = solve(problem)
ExplicitValues specification is only available for a function with 1 input dimension. Trying only even spacing.

Searching for fixed-point solutions.

|  ID |  Memory (bits) | Feasible | Table Size | Breakpoints WLs | TableData WL | BreakpointSpecification |             Error(Max,Current) | 
|   0 |            160 |        0 |      [2 2] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 2.841326e+01 |
|   1 |            672 |        0 |      [4 5] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 5.682945e+01 |
|   2 |            512 |        0 |      [3 5] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 5.682945e+01 |
|   3 |            544 |        0 |      [4 4] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 5.432456e+01 |
|   4 |            416 |        0 |      [3 4] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 5.432456e+01 |
|   5 |           1824 |        0 |      [7 8] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 2.041026e+01 |
|   6 |           1568 |        0 |      [6 8] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 2.137046e+01 |
|   7 |           5024 |        0 |    [13 12] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.098035e+01 |
|   8 |           4640 |        0 |    [12 12] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.209929e+01 |
|   9 |          19168 |        0 |    [26 23] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.966095e+01 |
|  10 |          16224 |        0 |    [22 23] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.877379e+01 |
|  11 |          31680 |        0 |    [43 23] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.877379e+01 |
|  12 |          94240 |        1 |   [128 23] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.761679e-03 |
|  13 |          47136 |        0 |    [64 23] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.877379e+01 |
|  14 |          23584 |        0 |    [32 23] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 2.053401e+01 |
|  15 |           2080 |        0 |      [8 8] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 2.041026e+01 |
|  16 |           5792 |        0 |    [15 12] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.790537e+01 |
|  17 |           4256 |        0 |    [11 12] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.098035e+01 |
|  18 |           3872 |        0 |    [10 12] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.790537e+01 |
|  19 |          14016 |        0 |    [19 23] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.877379e+01 |
|  20 |          49184 |        1 |   [128 12] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.761679e-03 |
|  21 |          24608 |        0 |    [128 6] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 8.191299e-01 |
|  22 |          32800 |        0 |    [128 8] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 4.199894e-01 |
|  23 |            256 |        0 |      [2 2] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 2.805641e+01 |
|  24 |            768 |        0 |      [4 5] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.228895e+01 |
|  25 |            608 |        0 |      [3 5] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 7.014101e+00 |
|  26 |            640 |        0 |      [4 4] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 4.975611e+01 |
|  27 |            512 |        0 |      [3 4] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 7.014101e+00 |
|  28 |           2144 |        0 |      [7 9] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.712759e+01 |
|  29 |           1856 |        0 |      [6 9] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.122256e+00 |
|  30 |           1920 |        0 |      [7 8] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 2.635433e+01 |
|  31 |           1664 |        0 |      [6 8] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.122256e+00 |
|  32 |           7200 |        0 |    [13 17] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.712759e+01 |
|  33 |           6656 |        0 |    [12 17] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.712759e+01 |
|  34 |           6784 |        0 |    [13 16] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980477e+00 |
|  35 |           6272 |        0 |    [12 16] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980478e+00 |
|  36 |          26528 |        0 |    [25 33] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.874749e+00 |
|  37 |          25472 |        0 |    [24 33] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.874750e+00 |
|  38 |          25728 |        0 |    [25 32] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 7.654788e+00 |
|  39 |          24704 |        0 |    [24 32] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 7.654787e+00 |
|  40 |          17056 |        0 |    [23 23] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.109943e+01 |
|  41 |          30880 |        0 |    [31 31] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980478e+00 |
|  42 |          39328 |        0 |    [35 35] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.136963e+01 |
|  43 |          43936 |        0 |    [37 37] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 6.251418e+00 |
|  44 |          46336 |        0 |    [38 38] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.213375e+00 |
|  45 |           2432 |        0 |      [8 9] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.712759e+01 |
|  46 |           2176 |        0 |      [8 8] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 2.635433e+01 |
|  47 |           8288 |        0 |    [15 17] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.712759e+01 |
|  48 |           7744 |        0 |    [14 17] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.712759e+01 |
|  49 |           7808 |        0 |    [15 16] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980478e+00 |
|  50 |           7296 |        0 |    [14 16] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980478e+00 |
|  51 |          30752 |        0 |    [29 33] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.874749e+00 |
|  52 |          29696 |        0 |    [28 33] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.874749e+00 |
|  53 |          29824 |        0 |    [29 32] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 7.654787e+00 |
|  54 |          28800 |        0 |    [28 32] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 7.654787e+00 |
|  55 |          23456 |        0 |    [27 27] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 9.597936e+00 |
|  56 |          34976 |        0 |    [33 33] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.874750e+00 |
|  57 |          41600 |        0 |    [36 36] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980487e+00 |
|  58 |           4352 |        0 |    [11 12] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.938894e-01 |
|  59 |           3968 |        0 |    [10 12] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 2.602627e+01 |
|  60 |           4000 |        0 |    [11 11] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.938894e-01 |
|  61 |           3648 |        0 |    [10 11] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980486e+00 |
|  62 |          15584 |        0 |    [21 23] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.058220e-01 |
|  63 |          14848 |        0 |    [20 23] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.109943e+01 |
|  64 |          14912 |        0 |    [21 22] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 8.058221e-01 |
|  65 |          14208 |        0 |    [20 22] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.246637e+01 |
|  66 |          28928 |        0 |    [30 30] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.325070e+01 |
|  67 |          37120 |        0 |    [34 34] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 2.296447e+00 |
|  68 |           6848 |        0 |    [14 15] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 2.635433e+01 |
|  69 |           6368 |        0 |    [13 15] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 2.635433e+01 |
|  70 |          26912 |        0 |    [27 31] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980478e+00 |
|  71 |          25920 |        0 |    [26 31] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 3.980478e+00 |
|  72 |          26048 |        0 |    [27 30] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.325070e+01 |
|  73 |          25088 |        0 |    [26 30] |         [32 32] |           32 |             EvenSpacing |     7.812500e-03, 1.325070e+01 |
|  74 |            208 |        0 |      [2 2] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 2.805641e+01 |
|  75 |            720 |        0 |      [4 5] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 5.612493e+01 |
|  76 |            560 |        0 |      [3 5] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 7.014101e+00 |
|  77 |            592 |        0 |      [4 4] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 5.557034e+01 |
|  78 |            464 |        0 |      [3 4] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 7.014101e+00 |
|  79 |           1872 |        0 |      [7 8] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.940349e+01 |
|  80 |           1616 |        0 |      [6 8] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.122256e+00 |
|  81 |           5072 |        0 |    [13 12] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.884890e+01 |
|  82 |           4688 |        0 |    [12 12] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.884890e+01 |
|  83 |          18480 |        0 |    [25 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  84 |          17744 |        0 |    [24 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  85 |          36144 |        0 |    [49 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  86 |          35408 |        0 |    [48 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  87 |          17008 |        0 |    [23 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  88 |          22896 |        0 |    [31 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  89 |          25840 |        0 |    [35 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  90 |          27312 |        0 |    [37 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  91 |          28048 |        0 |    [38 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  92 |           2128 |        0 |      [8 8] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.940349e+01 |
|  93 |           5840 |        0 |    [15 12] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.884890e+01 |
|  94 |           5456 |        0 |    [14 12] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.884890e+01 |
|  95 |          21424 |        0 |    [29 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  96 |          20688 |        0 |    [28 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  97 |          42032 |        0 |    [57 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  98 |          41296 |        0 |    [56 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
|  99 |           4304 |        0 |    [11 12] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 2.805640e-01 |
| 100 |           3920 |        0 |    [10 12] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.884890e+01 |
| 101 |          15536 |        0 |    [21 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 7.014104e-02 |
| 102 |          14800 |        0 |    [20 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 103 |          30256 |        0 |    [41 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 104 |          29520 |        0 |    [40 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 105 |          22160 |        0 |    [30 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 106 |          25104 |        0 |    [34 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 107 |          26576 |        0 |    [36 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 108 |          19952 |        0 |    [27 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 109 |          19216 |        0 |    [26 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 110 |          39088 |        0 |    [53 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 111 |          38352 |        0 |    [52 23] |          [32 8] |           32 |             EvenSpacing |     7.812500e-03, 1.808342e+01 |
| 112 |            160 |        0 |      [2 2] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.726121e+02 |
| 113 |            800 |        0 |      [4 6] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.363413e+01 |
| 114 |            416 |        0 |      [4 3] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.363413e+01 |
| 115 |           1568 |        0 |      [8 6] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 2.546145e+00 |
| 116 |           6176 |        0 |    [16 12] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.098035e+01 |
| 117 |          23584 |        0 |    [32 23] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 2.053401e+01 |
| 118 |          47136 |        0 |    [64 23] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.877379e+01 |
| 119 |          11808 |        0 |    [16 23] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 2.388535e+01 |
| 120 |           3104 |        0 |     [8 12] |           [8 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 2.546145e+00 |
| 121 |            256 |        0 |      [2 2] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.751799e+02 |
| 122 |            896 |        0 |      [4 6] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.439038e+01 |
| 123 |            512 |        0 |      [4 3] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.439038e+01 |
| 124 |           2944 |        0 |     [8 11] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 2.108408e+00 |
| 125 |           1664 |        0 |      [8 6] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.728494e+00 |
| 126 |          11392 |        0 |    [16 22] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.037686e+01 |
| 127 |           5760 |        0 |    [16 11] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.013200e+01 |
| 128 |          44160 |        0 |    [32 43] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 5.320771e+00 |
| 129 |          22656 |        0 |    [32 22] |         [32 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.467696e+01 |
| 130 |            208 |        0 |      [2 2] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.742838e+02 |
| 131 |            848 |        0 |      [4 6] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.301070e+01 |
| 132 |            464 |        0 |      [4 3] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.301070e+01 |
| 133 |           1616 |        0 |      [8 6] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 3.349972e+00 |
| 134 |           6224 |        0 |    [16 12] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.187438e+01 |
| 135 |          23632 |        0 |    [32 23] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.983669e+01 |
| 136 |          47184 |        0 |    [64 23] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.805391e+01 |
| 137 |          11856 |        0 |    [16 23] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 2.323312e+01 |
| 138 |           3152 |        0 |     [8 12] |          [32 8] |           32 |         EvenPow2Spacing |     7.812500e-03, 3.349972e+00 |
| 139 |            208 |        0 |      [2 2] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.734961e+02 |
| 140 |            848 |        0 |      [4 6] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.500173e+01 |
| 141 |            464 |        0 |      [4 3] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.500173e+01 |
| 142 |           2896 |        0 |     [8 11] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 2.123345e+00 |
| 143 |           1616 |        0 |      [8 6] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.245149e+00 |
| 144 |          11344 |        0 |    [16 22] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.066019e+01 |
| 145 |           5712 |        0 |    [16 11] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 9.250069e+00 |
| 146 |          44112 |        0 |    [32 43] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 6.126904e+00 |
| 147 |          22608 |        0 |    [32 22] |          [8 32] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.374993e+01 |
Searching for floating-point solutions.

| 148 |            192 |        0 |      [2 2] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 2.805779e+01 |
| 149 |            704 |        0 |      [4 5] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 3.116746e+00 |
| 150 |            544 |        0 |      [3 5] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 7.005769e+00 |
| 151 |            576 |        0 |      [4 4] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 3.116746e+00 |
| 152 |            448 |        0 |      [3 4] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 7.005769e+00 |
| 153 |           2080 |        0 |      [7 9] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 9.060279e-01 |
| 154 |           1792 |        0 |      [6 9] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 1.112051e+00 |
| 155 |           1856 |        0 |      [7 8] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 9.060279e-01 |
| 156 |           1600 |        0 |      [6 8] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 1.112051e+00 |
| 157 |           7552 |        0 |    [13 18] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 8.405081e-01 |
| 158 |           6976 |        0 |    [12 18] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 1.491180e+00 |
| 159 |           6720 |        0 |    [13 16] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 8.103709e-01 |
| 160 |           6208 |        0 |    [12 16] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 1.692174e+00 |
| 161 |          28064 |        0 |    [25 35] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 7.219264e-01 |
| 162 |          26944 |        0 |    [24 35] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 3.491206e+00 |
| 163 |          91008 |        0 |    [49 58] |         [16 16] |           32 |             EvenSpacing |     7.812500e-03, 3.169898e-01 |
| 164 |            320 |        0 |      [2 2] |         [16 16] |           64 |             EvenSpacing |     7.812500e-03, 2.805780e+01 |
| 165 |            416 |        0 |      [2 2] |         [16 64] |           64 |             EvenSpacing |     7.812500e-03, 2.805780e+01 |
| 166 |            192 |        0 |      [2 2] |         [16 16] |           32 |         EvenPow2Spacing |     7.812500e-03, 1.095309e+02 |
| 167 |            320 |        0 |      [2 2] |         [16 16] |           64 |         EvenPow2Spacing |     7.812500e-03, 1.095309e+02 |
| 168 |            416 |        0 |      [2 2] |         [16 64] |           64 |         EvenPow2Spacing |     7.812500e-03, 1.086620e+02 |

Best Solution
|  ID |  Memory (bits) | Feasible | Table Size | Breakpoints WLs | TableData WL | BreakpointSpecification |             Error(Max,Current) |
|  20 |          49184 |        1 |   [128 12] |           [8 8] |           32 |             EvenSpacing |     7.812500e-03, 1.761679e-03 |
solution = 
  1×1 FunctionApproximation.LUTSolution with properties:

          ID: 20
    Feasible: "true"

View the lookup table data.

solution.TableData
ans = struct with fields:
       BreakpointValues: {[1×128 double]  [576 584 592 600 608 616 624 632 640 648 656 664]}
    BreakpointDataTypes: [1×2 embedded.numerictype]
            TableValues: [128×12 double]
          TableDataType: [1×1 embedded.numerictype]
          IsEvenSpacing: 1
          Interpolation: Linear

Compare Lookup Table Approximation to Original Function

Compare the numerical behavior of the original surface fit function with the optimized lookup table approximation.

compare(solution)

Figure contains 2 axes objects. Axes object 1 with title Comparison of Original Function and Approximation, xlabel Input Dimension 1, ylabel Input Dimension 2 contains 2 objects of type surface. These objects represent Original, Approximation. Axes object 2 with title Feasibility of Solution: Feasible AbsTol = 0.0078125 RelTol = 0.0078125, xlabel Input Dimension 1, ylabel Input Dimension 2 contains 2 objects of type surface. These objects represent Absolute Error : abs(Original - Approximation), Max Error Allowed : max(abs(Original) * RelTol, AbsTol).

ans=1×2 struct array with fields:
    Breakpoints
    Original
    Approximate

Generate Subsystem

Use the approximate method to generate a Simulink® subsystem that contains the lookup table approximation.

approximate(solution)

approximate-subsystem.png

See Also

(Curve Fitting Toolbox) | |

Topics