fnval

Вычислите функцию сплайна

Описание

пример

v = fnval(f,x) задает значение f (x) в точках в x функции сплайна f описание которой содержится в f.

Если f является скалярным и одномерным, выходной v получается путем замены каждой записи x по значению f в этой записи. Это намерение во всех других случаях, кроме того, для d-значенный m-вариативная функция, d-векторы заменяют m-векторы.

Для одномерного f:

  • Если f имеет скалярное значение, то v имеет тот же размер, что и x.

  • Если f [d1,...,dr]-значил, и x имеет размер [n1,...,ns], затем v имеет размер [d1,...,dr, n1,...,ns], с v(:,...,:, j1,...,js) значение f в x(j1,...,js), - за исключением того, что:

    • n1 игнорируется, если это 1 и s является 2, т.е., если x является вектор-строка;

    • MATLAB® игнорирует любые конечные синглтонные размерности x.

Для m-вариативные f с m>1, с f [d1,...,dr]-значен, x может быть либо массив, либо массив ячеек {x1,...,xm}.

  • Если x - массив, размера [n1,...,ns], затем n1 должен равняться m, и v имеет размер [d1,...,dr, n2,...,ns], с v(:,...,:, j2,...,js) значение f в x(:,j2,...,js), - за исключением того, что:

    • d1..., dr проигнорировано в случае f скалярного значения, т.е. обоих r и n1 являются 1;

    • MATLAB игнорирует любые конечные синглтонные размерности x.

  • Если x - массив ячеек, тогда он должен иметь вид {x1,...,xm}, с xj вектор, длиной nj, и, в этом случае, v имеет размер [d1,...,dr, n1,...,nm], с v(:,...,:, j1,...,jm) значение f в (x1(j1)..., xm(jm)), - кроме того d1..., dr проигнорировано в случае f скалярного значения, т.е. обоих r и n1 являются 1.

Если у f разрыв перехода на x, затем возвращается f значения (x +), т.е. предел справа, кроме тех случаев, когда x равен правому концу базового интервала формы; для таких xвозвращается значение f (x -), т.е. предел слева.

fnval(x,f) то же, что и fnval(f,x).

fnval(...,'l') обрабатывает f как непрерывную слева. Это означает, что, если у f есть разрыв переход x, затем возвращается значение f (x -), т.е. предел слева, кроме тех случаев, когда x равен левому концу базового интервала; для таких xвозвращается значение f (x +).

Если функция многомерна, то вышеуказанные операторы, касающиеся непрерывности слева и справа, применяют координатную мудрость.

Примеры

свернуть все

Этот пример показывает, как интерполировать некоторые данные и построить график и оценить получившиеся функции.

Определите некоторые данные.

x = [0.074 0.31 0.38 0.53 0.57 0.58 0.59 0.61 0.61 0.65 0.71 0.81 0.97];
y = [0.91 0.96 0.77 0.5 0.5 0.51 0.51 0.53 0.53 0.57 0.62 0.61 0.31]; 

Интерполируйте данные и постройте график полученной функции, f.

f = csapi( x, y )
f = struct with fields:
      form: 'pp'
    breaks: [1x12 double]
     coefs: [11x4 double]
    pieces: 11
     order: 4
       dim: 1

fnplt( f )

Figure contains an axes. The axes contains an object of type line.

Найдите значение функции f при x = 0.5.

fnval( f, 0.5 )
ans = 0.5294

Найдите значение функции f при 0, 0.1, ..., 1.

fnval( f, 0:0.1:1 )
ans = 1×11

    0.3652    1.0220    1.1579    0.9859    0.7192    0.5294    0.5171    0.6134    0.6172    0.4837    0.2156

Создайте функцию f2 который представляет поверхность.

x = 0.0001+(-4:0.2:4);
y = -3:0.2:3;
[yy, xx] = meshgrid( y, x );
r = pi*sqrt( xx.^2+yy.^2 );
z = sin( r )./r;
f2 = csapi( {x,y}, z ); 

Постройте график f2.

fnplt( f2 )
axis( [-5, 5, -5, 5, -0.5, 1] );

Figure contains an axes. The axes contains an object of type surface.

Найдите значение функции f2 при x = -2 и y = 3.

fnval( f2, [-2; 3] )
ans = -0.0835

Входные параметры

свернуть все

Функция сплайна, которую вы хотите вычислить, заданная как объект.

Точки, в которых вы хотите вычислить функцию сплайна f, заданный как вектор, матрица или массив ячеек.

Выходные аргументы

свернуть все

Значение f (x) в точках в x функции сплайн f, возвращенной в виде скаляра, вектора, матрицы или массива ячеек.

Алгоритмы

Для каждой записи xфункция определяет соответствующий интервал разрыва или интервал узлов и собирает соответствующую информацию. В зависимости от того, f находится в ppform или в B-форме, вложенное умножение или B-сплайн рецидив (см., например, [PGS; X. (3)]) затем используются векторные модели для одновременной оценки во всех записях x. Оценка многомерной полиномиальной сплайн полностью использует структуру тензорного продукта.

Оценка рационального сплайна следует за оценкой соответствующего векторного сплайна путем деления всего, кроме его последнего компонента, на его последний компонент.

Оценка функции в stform существенно использует stcolи пытается сохранить вовлеченные матрицы до разумного размера.

Введенный в R2006b