Fourier basis functions for tunable gain surface

You use basis function expansions to parameterize gain surfaces for tuning
gain-scheduled controllers. `fourierBasis`

generates periodic Fourier
series expansions for parameterizing gain surfaces that depend periodically on the
scheduling variables, such as a gain that varies with angular position. Use the output
of `fourierBasis`

to create tunable gain surfaces with
`tunableSurface`

.

generates
a function that evaluates the first `shapefcn`

= fourierBasis(`N`

)`N`

harmonics
of *e ^{iπx}*:

$$F\left(x\right)=\left[\mathrm{cos}\left(\pi x\right),\mathrm{sin}\left(\pi x\right),\text{\hspace{0.17em}}\mathrm{cos}\left(2\pi x\right),\mathrm{sin}\left(2\pi x\right),\text{\hspace{0.17em}}\dots ,\mathrm{cos}\left(N\pi x\right),\mathrm{sin}\left(N\pi x\right)\right].$$

*F* is the function represented by `shapefcn`

.
The term of *F* are the first `2*N`

basis
functions in the Fourier series expansion of a periodically varying
gain, *K*(*x*), with *K*(–1)
= *K*(1). That expansion is given by:

$$K\left(x\right)=\frac{{a}_{0}}{2}+{\displaystyle \sum _{k}\left\{{a}_{k}\mathrm{cos}\left(k\pi x\right)+{b}_{k}\mathrm{sin}\left(k\pi x\right)\right\}}.$$

generates
an `shapefcn`

= fourierBasis(`N`

,`nvars`

)`nvars`

-dimensional Fourier basis for periodic
functions on the region [–1,1]^{nvars}.
This basis is the outer product of `nvars`

Fourier
bases with `N`

harmonics along each dimension.
The resulting function `shapefcn`

takes `nvars`

input
arguments and returns a vector with `(2*N+1)^(nvars-1)-1`

entries.

To specify basis functions of multiple scheduling variables
where the expansions are different for each variable, use `ndBasis`

.

If the gain surface

`K`

is periodic in the scheduling variable*x*with period*P*, make sure that the corresponding entry in`K.Normalization.InputScaling`

is set to*P*/2 to ensure consistency with the`fourierBasis`

period,*P*= 2. When using the default normalization, the*x*values in`K.SamplingGrid`

must span exactly one period, [*a*,*a+P*], to satisfy this requirement. See the`Normalization`

property of`tunableSurface`

for more details.