1D интерполяция данных (поиск по таблице)
vq = interp1(x,v,xq)vq = interp1(x,v,xq,method)vq = interp1(x,v,xq,method,extrapolation)vq = interp1(v,xq)vq = interp1(v,xq,method)vq = interp1(v,xq,method,extrapolation)pp = interp1(x,v,method,'pp')возвращает интерполированные значения 1D функции в определенных точках запроса с помощью линейной интерполяции. Векторный vq = interp1(x,v,xq) x содержит точки выборки, и v содержит соответствующие значения, v (x). Векторный xq содержит координаты точек запроса.
Если у вас есть несколько наборов данных, которые выбираются в тех же координатах точки, то можно передать v как массив. Каждый столбец массива v содержит различный набор 1D демонстрационных значений.
задает альтернативный метод интерполяции: vq = interp1(x,v,xq,method) 'linear', 'nearest', 'next', 'previous', 'pchip', 'cubic', 'v5cubic', 'makima' или 'spline'. Методом по умолчанию является 'linear'.
задает стратегию оценки точек, которые лежат вне области vq = interp1(x,v,xq,method,extrapolation) x. Установите extrapolation на 'extrap' когда это необходимо использовать алгоритм method для экстраполяции. Также можно задать скалярное значение, в этом случае, interp1 возвращает то значение для всех точек вне области x.
возвращает интерполированные значения и принимает набор по умолчанию координат точки выборки. Точки по умолчанию являются последовательностью чисел от vq = interp1(v,xq) 1 до n, где n зависит от формы v:
Когда v является вектором, точками по умолчанию является 1:length(v).
Когда v является массивом, точками по умолчанию является 1:size(v,1).
Используйте этот синтаксис, когда вы не будете обеспокоены абсолютными расстояниями между точками.
задает любой из альтернативных методов интерполяции и использует точки выборки по умолчанию.vq = interp1(v,xq,method)
задает стратегию экстраполяции и использует точки выборки по умолчанию.vq = interp1(v,xq,method,extrapolation)
возвращает форму кусочного полинома v (x) использование алгоритма pp = interp1(x,v,method,'pp') method.
Этот синтаксис не рекомендуется. Используйте griddedInterpolant вместо этого.
Задайте точки выборки, x, и соответствующие демонстрационные значения, v.
x = 0:pi/4:2*pi; v = sin(x);
Задайте точки запроса, чтобы быть более прекрасной выборкой в области значений x.
xq = 0:pi/16:2*pi;
Интерполируйте функцию в точках запроса и постройте график результата.
figure vq1 = interp1(x,v,xq); plot(x,v,'o',xq,vq1,':.'); xlim([0 2*pi]); title('(Default) Linear Interpolation');

Теперь оцените v в тех же точках с помощью метода 'spline'.
figure vq2 = interp1(x,v,xq,'spline'); plot(x,v,'o',xq,vq2,':.'); xlim([0 2*pi]); title('Spline Interpolation');

Задайте набор значений функции.
v = [0 1.41 2 1.41 0 -1.41 -2 -1.41 0];
Задайте набор точек запроса, которые падают между точками по умолчанию, 1:9. В этом случае точками по умолчанию является 1:9, потому что v содержит значения 9.
xq = 1.5:8.5;
Оцените v в xq.
vq = interp1(v,xq);
Постройте график результата.
figure plot((1:9),v,'o',xq,vq,'*'); legend('v','vq');

Задайте набор точек выборки.
x = 1:10;
Задайте значения функции
в точках выборки.
v = (5*x)+(x.^2*1i);
Задайте точки запроса, чтобы быть более прекрасной выборкой в области значений x.
xq = 1:0.25:10;
Интерполируйте v в точках запроса.
vq = interp1(x,v,xq);
Постройте график действительной части результата красного цвета и мнимой части синего цвета.
figure plot(x,real(v),'*r',xq,real(vq),'-r'); hold on plot(x,imag(v),'*b',xq,imag(vq),'-b');

Интерполируйте точки данных, к которым добавляют метку времени.
Рассмотрите набор данных, содержащий температурные чтения, которые измеряются каждые четыре часа. Составьте таблицу с ценностью одного дня данных и отобразите данные на графике.
x = (datetime(2016,1,1):hours(4):datetime(2016,1,2))'; x.Format = 'MMM dd, HH:mm'; T = [31 25 24 41 43 33 31]'; WeatherData = table(x,T,'VariableNames',{'Time','Temperature'})
WeatherData=7×2 table
Time Temperature
_____________ ___________
Jan 01, 00:00 31
Jan 01, 04:00 25
Jan 01, 08:00 24
Jan 01, 12:00 41
Jan 01, 16:00 43
Jan 01, 20:00 33
Jan 02, 00:00 31
plot(WeatherData.Time, WeatherData.Temperature, 'o')
Интерполируйте набор данных, чтобы предсказать температуру, читающую в течение каждой минуты дня. Поскольку данные являются периодическими, используйте метод интерполяции 'spline'.
xq = (datetime(2016,1,1):minutes(1):datetime(2016,1,2))';
V = interp1(WeatherData.Time, WeatherData.Temperature, xq, 'spline');Постройте график интерполированных точек.
hold on plot(xq,V,'r')

Задайте точки выборки, x, и соответствующие демонстрационные значения, v.
x = [1 2 3 4 5]; v = [12 16 31 10 6];
Задайте точки запроса, xq, которые расширяют вне области x.
xq = [0 0.5 1.5 5.5 6];
Оцените v в xq с помощью метода 'pchip'.
vq1 = interp1(x,v,xq,'pchip')vq1 = 1×5
19.3684 13.6316 13.2105 7.4800 12.5600
Затем, оцените v в xq с помощью метода 'linear'.
vq2 = interp1(x,v,xq,'linear')vq2 = 1×5
NaN NaN 14 NaN NaN
Теперь, используйте метод 'linear' с опцией 'extrap'.
vq3 = interp1(x,v,xq,'linear','extrap')
vq3 = 1×5
8 10 14 4 2
'pchip' экстраполирует по умолчанию, но 'linear' не делает.
Задайте точки выборки, x, и соответствующие демонстрационные значения, v.
x = [-3 -2 -1 0 1 2 3]; v = 3*x.^2;
Задайте точки запроса, xq, которые расширяют вне области x.
xq = [-4 -2.5 -0.5 0.5 2.5 4];
Теперь оцените v в xq с помощью метода 'pchip' и присвойте любые значения вне области x к значению, 27.
vq = interp1(x,v,xq,'pchip',27)vq = 1×6
27.0000 18.6562 0.9375 0.9375 18.6562 27.0000
Задайте точки выборки.
x = (-5:5)';
Демонстрационные три различных параболических функции в точках заданы в x.
v1 = x.^2; v2 = 2*x.^2 + 2; v3 = 3*x.^2 + 4;
Создайте матричный v, столбцы которого являются векторами, v1, v2 и v3.
v = [v1 v2 v3];
Задайте набор точек запроса, xq, чтобы быть более прекрасной выборкой в области значений x.
xq = -5:0.1:5;
Выполните все три функции в xq и постройте график результатов.
vq = interp1(x,v,xq,'pchip'); figure plot(x,v,'o',xq,vq); h = gca; h.XTick = -5:5;

Круги в графике представляют v, и сплошные линии представляют vq.
x 'SamplePoints' Точки выборки, заданные как строка или вектор - столбец вещественных чисел. Значения в x должны быть отличными. Длина x должна соответствовать одному из следующих требований:
Если v является вектором, то length(x) должен равняться length(v).
Если v является массивом, то length(x) должен равняться size(v,1).
Пример: [1 2 3 4 5 6 7 8 9 10]
Пример 1: 10
Пример: [3 7 11 15 19 23 27 31]'
Типы данных: единственный | удваиваются | длительность | datetime
v Демонстрационные значенияДемонстрационные значения, заданные как вектор, матрица или массив вещественных или комплексных чисел. Если v является матрицей или массивом, то каждый столбец содержит отдельный набор 1D значений.
Если v содержит комплексные числа, то interp1 интерполирует действительные и мнимые части отдельно.
Пример: rand (1,10)
Пример: rand (10,1)
Пример: rand (10,3)
Типы данных: единственный | удваиваются | длительность | datetime
Поддержка комплексного числа: Да
xq Точки запросаТочки запроса, заданные как скаляр, вектор, матрица или массив вещественных чисел.
Пример 5
Пример 1: 0.05:10
Пример 1: 0.05:10)'
Пример: [0 1 2 7.5 10]
Типы данных: единственный | удваиваются | длительность | datetime
method — Метод интерполяции'linear' (значение по умолчанию) | 'nearest' | 'next' | 'previous' | 'pchip' | 'cubic' | 'v5cubic' | 'makima' | 'spline'Метод интерполяции, заданный как одна из опций в этой таблице.
|
Метод |
Описание |
Непрерывность |
Комментарии |
|---|---|---|---|
|
|
Линейная интерполяция. Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. Это - метод интерполяции по умолчанию. |
C0 |
|
|
|
Самая близкая соседняя интерполяция. Интерполированное значение в точке запроса является значением в самом близком демонстрационном узле решетки. |
Прерывистый |
|
|
|
Следующая соседняя интерполяция. Интерполированное значение в точке запроса является значением в следующем демонстрационном узле решетки. |
Прерывистый |
|
|
|
Предыдущая соседняя интерполяция. Интерполированное значение в точке запроса является значением в предыдущем демонстрационном узле решетки. |
Прерывистый |
|
|
|
Сохраняющая форму кусочная кубичная интерполяция. Интерполированное значение в точке запроса основано на сохраняющей форму кусочной кубичной интерполяции значений в соседних узлах решетки. |
C1 |
|
ПримечаниеПоведение
|
То же самое как |
C1 |
Этот метод в настоящее время возвращает тот же результат как |
|
|
Кубическая свертка используется в MATLAB® 5. |
C1 |
Точки должны быть однородно расположены с интервалами. |
|
|
Измененный Акима кубическая интерполяция Эрмита. Интерполированное значение в точке запроса основано на кусочной функции многочленов с градусом самое большее три. Формула Акима изменяется, чтобы избежать проскакивания. |
C1 |
|
|
|
Интерполяция сплайна с помощью не-узла заканчивает условия. Интерполированное значение в точке запроса основано на кубичной интерполяции значений в соседних узлах решетки в каждой соответствующей размерности. |
C2 |
|
extrapolation — Стратегия экстраполяции'extrap' | скалярное значениеСтратегия экстраполяции, заданная как 'extrap' или действительное скалярное значение.
Задайте 'extrap' когда это необходимо interp1, чтобы оценить точки вне области с помощью того же метода, который это использует для интерполяции.
Задайте скалярное значение когда это необходимо interp1, чтобы возвратить определенное постоянное значение для точек вне области.
Поведение по умолчанию зависит от входных параметров:
Если вы задаете 'pchip', 'spline' или методы интерполяции 'makima', то поведением по умолчанию является 'extrap'.
Все другие методы интерполяции возвращают NaN по умолчанию для точек запроса вне области.
Пример: 'экс-прерывание'
Пример 5
Типы данных: char | представляет в виде строки | единственный | дважды
vq Интерполированные значенияИнтерполированные значения, возвращенные как скаляр, вектор, матрица или массив. Размер vq зависит от формы v и xq.
| Форма v | Форма xq | Размер Vq | Пример |
|---|---|---|---|
| Вектор | Вектор | size(xq) | Если size(v) = [1 100]и size(xq) = [1 500], затем size(vq) = [1 500]. |
| Вектор | Матрица или массив N-D | size(xq) | Если size(v) = [1 100]и size(xq) = [50 30], затем size(vq) = [50 30]. |
| Матрица или массив N-D | Вектор | [length(xq) size(v,2),...,size(v,n)] | Если size(v) = [100 3]и size(xq) = [1 500], затем size(vq) = [500 3]. |
| Матрица или массив N-D | Матрица или массив N-D | [size(xq,1),...,size(xq,n),... size(v,2),...,size(v,m)] | Если size(v) = [4 5 6]и size(xq) = [2 3 7], затем size(vq) = [2 3 7 5 6]. |
pp — Кусочный полиномКусочный полином, возвращенный как структура, которую можно передать функции ppval для оценки.
Указания и ограничения по применению:
Генерация кода не поддерживает методы интерполяции 'makima' или 'cubic'.
Входной параметр x (точки выборки) должен строго увеличиваться или строго уменьшаться. Индексы не переупорядочиваются.
Если входной параметр, v (демонстрационные значения) является вектором переменной длины (1 : или :-by-1), то форма вывода vq совпадает с формой в MATLAB.
Если входной параметр, v является переменным размером, не является вектором переменной длины и становится вектором - строкой во время выполнения, то ошибка происходит.
Если входной параметр, xq (точки запроса) является переменным размером, не является вектором переменной длины и становится строкой или вектором - столбцом во время выполнения, то ошибка происходит.
Указания и ограничения по применению:
x должен быть конечным, увеличивающимся вектором, не повторяя элементы. x должен быть двойным или единственным.
v должен быть массивом типа double или единственный. Размер первой неодноэлементной размерности v должен совпасть с длиной x. V может быть комплексным.
xq должен быть массивом типа double или единственный.
method должен быть 'linear', 'nearest', 'v5cubic' или 'spline'.
Для получения дополнительной информации смотрите функции MATLAB Выполнения на GPU (Parallel Computing Toolbox).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.