## Data Selection

### Selecting Data to Fit in Curve Fitter App

To select data to fit in the Curve Fitter app, click **Select Data**
in the **Data** section on the **Curve Fitter** tab. You
can select variables in your MATLAB^{®} workspace.

To fit curves:

In the Select Fitting Data dialog box, select

**X data**and**Y data**.Select only

**Y data**to plot`Y`

against the index`X = 1:length(Y)`

.

To fit surfaces, select

**X data**,**Y data**, and**Z data**in the Select Fitting Data dialog box.

In the Select Fitting Data dialog box, you can use the drop-down lists to select any numeric variable in your MATLAB workspace that has more than one element. You can also select a numeric variable that is a column in a table variable. First select the table name, and then select the column name.

Similarly, you can select any numeric variable in your workspace to use as
**Weights**, including a numeric table column.

For curves, the X and Y variables must have the same number of elements. If you specify weights, the weights variable must have the same number of elements as the other data variables.

For surfaces, the X, Y, and Z variables must be either arrays with the same number of elements, or two vectors (X and Y) representing the row and column headers of a matrix Z. If you specify weights, the weights variable must have the same number of elements as the Z variable.

For more information, see Selecting Compatible Size Surface Data.

When you select variables, the Curve Fitter app immediately creates a curve or surface
fit with the default settings. If you want to avoid time-consuming refitting for large data
sets, you can turn off the automatic behavior. On the **Curve Fitter** tab,
in the **Fit** section, select **Manual**.

**Note**

The Curve Fitter app uses a snapshot of the data you select. Subsequent workspace changes to the data have no effect on your fits. To update your fit data from the workspace, first change the variable selection, and then reselect the variable with the drop-down controls.

### Selecting Compatible Size Surface Data

For surface data, in the Curve Fitter app you can select either arrays of the same size or tabular data.

#### Arrays of the Same Size

Curve Fitter app expects data variables to be the same size. If the sizes are
different but the number of elements are the same, then the app reshapes the variables to
create a fit and displays a warning in the **Results** pane. The warning
indicates a possible problem with your selected data.

#### Tabular Data

The data variables can form tabular data, where `X`

and
`Y`

represent the row and column headers of a table (sometimes called
*breakpoints*) and the `Z`

values are the table
values.

Sizes are compatible if:

**X data**is a vector of length`n`

.**Y data**is a vector of length`m`

.**Z data**is a matrix of size`[m,n]`

.

The following table shows an example of data in tabular form with
`n = 4`

and `m = 3`

.

`x(1)` | `x(2)` | `x(3)` | `x(4)` | |
---|---|---|---|---|

`y(1)` | `z(1,1)` | `z(1,2)` | `z(1,3)` | `z(1,4)` |

`y(2)` | `z(2,1)` | `z(2,2)` | `z(2,3)` | `z(2,4)` |

`y(3)` | `z(3,1)` | `z(3,2)` | `z(3,3)` | `z(3,4)` |

Like the `surf`

function, the Curve Fitter app expects
data variables where `length(X) = n`

, `length(Y) = m`

,
and `size(Z) = [m,n]`

. If the size of `Z`

is
`[n,m]`

, the app creates a fit by transposing `Z`

and
provides a warning about the data transformation. You can see the warning in the
**Results** pane.

```
Using X data for rows and Y data for columns to match Z data
matrix.
```

For an example of tabular data, run the following code.

x = linspace(0,1,7); y = linspace(0,1,9).'; z = bsxfun(@franke,x,y);

For surface fitting at the command line with the `fit`

function, use the `prepareSurfaceData`

function if your data is in tabular form.

#### Weights

If you specify surface weights, specify a variable with the same size as Z. If the sizes are different but the number of elements is the same, the Curve Fitter app reshapes the weights and displays a warning.

### Troubleshooting Data Problems

If there are problems with the data you select, you can see messages in the
**Results** pane. For example, the Curve Fitter app ignores
`Inf`

s, `NaN`

s, and imaginary components of complex
numbers in the data, and displays messages in the **Results** pane in these
cases.

If you see warnings about reshaping your data or incompatible sizes, read Selecting Compatible Size Surface Data for more information.

The following warning indicates that two or more data points have (x, y) values that are the same or very close together.

```
Duplicate x-y data points detected: using average of the z
values
```

The default interpolant fit type needs to calculate a unique value at that point. You do not need do anything to fix the problem; this warning is just for your information. The Curve Fitter app automatically takes the average z value of any group of points with the same x-y values.

Other problems with your selected data can produce the following error.

```
Error computing Delaunay triangulation. Please try again with different
data.
```

For some arrangements of the data, the Curve Fitter app is unable to compute a Delaunay triangulation. Some of the surface interpolation methods (linear, cubic spline, and nearest neighbor) require a Delaunay triangulation of the data. For example, this error can occur when all the data points lie on a straight line in the x-y plane. In this case, the Curve Fitter app is unable to fit a surface to the data. You need to provide more data in order to fit a surface.