Заполнить отсутствующие значения
заполняет отсутствующие записи массива или таблицы значением константы F = fillmissing(A,'constant',v)v. Если A является матрицей или многомерным массивом, то v может быть скаляром или вектором. Когда v является вектором, каждый элемент задает значение заливки в соответствующем столбце A. Если A является таблицей или расписанием, то v также может быть массивом ячеек, элементы которого содержат значения заливки для каждой переменной таблицы.
Отсутствующие значения определяются в соответствии с типом данных A:
NaN — double, single, duration, и calendarDuration
NaT — datetime
<missing> — string
<undefined> — categorical
' ' — char
{''} — cell массивов символов
Если A является таблицей, то тип данных каждого столбца определяет отсутствующее значение для этого столбца.
заполняет пробелы отсутствующих записей с помощью пользовательского метода, заданного дескриптором функции F = fillmissing(A,fillfun,gapwindow)fillfun и фиксированное окно, окружающее каждый промежуток, по которому вычисляются значения заполнения. fillfun должны иметь входные аргументы xs, ts, и tq, которые являются векторами, содержащими данные выборки xs длины gapwindow, местоположения данных образцов ts длины gapwindowи отсутствующие местоположения данных tq. Расположения в ts и tq являются подмножеством вектора точек выборки.
указывает дополнительные параметры для заполнения отсутствующих значений с использованием одного или нескольких аргументов пары имя-значение. Например, если F = fillmissing(___,Name,Value)t является вектором значений времени, то fillmissing(A,'linear','SamplePoints',t) интерполирует данные в A относительно времени в t.
NaN ЦенностиСоздание вектора, содержащего NaN значения и заменить каждое NaN с предыдущим отсутствующим значением.
A = [1 3 NaN 4 NaN NaN 5];
F = fillmissing(A,'previous')F = 1×7
1 3 3 4 4 4 5
NaN ЦенностиСоздание матрицы 2 на 2 с помощью NaN значение в каждом столбце. Заполниться NaN с 100 в первом столбце и 1000 во втором столбце.
A = [1 NaN; NaN 2]
A = 2×2
1 NaN
NaN 2
F = fillmissing(A,'constant',[100 1000])F = 2×2
1 1000
100 2
Использовать интерполяцию для замены NaN значения в неравномерно дискретизированных данных.
Определите вектор неоднородных точек выборки и вычислите синусоидальную функцию над точками.
x = [-4*pi:0.1:0, 0.1:0.2:4*pi]; A = sin(x);
Ввести NaN значения в A.
A(A < 0.75 & A > 0.5) = NaN;
Заполните недостающие данные с помощью линейной интерполяции и верните заполненный вектор F и логический вектор TF. Значение 1 (true) в записях TF соответствует значениям F которые были заполнены.
[F,TF] = fillmissing(A,'linear','SamplePoints',x);
Постройте график исходных и заполненных данных.
plot(x,A,'.', x(TF),F(TF),'o') xlabel('x'); ylabel('sin(x)') legend('Original Data','Filled Missing Data')

NaN с движущейся разделительной полосойИспользуйте движущуюся медиану для заполнения отсутствующих числовых данных.
Создание вектора точек выборки x и вектор данных A содержит отсутствующие значения.
x = linspace(0,10,200); A = sin(x) + 0.5*(rand(size(x))-0.5); A([1:10 randi([1 length(x)],1,50)]) = NaN;
Заменить NaN значения в A использование движущейся медианы с окном длиной 10 и печать как исходных данных, так и заполненных данных.
F = fillmissing(A,'movmedian',10); plot(x,F,'r.-',x,A,'b.-') legend('Filled Missing Data','Original Data')

Определение пользовательской функции для заполнения NaN значения с предыдущим непутевым значением.
Определение вектора точек выборки t и вектор соответствующих данных A содержа NaN значения. Постройте график данных.
t = 10:10:100;
A = [0.1 0.2 0.3 NaN NaN 0.6 0.7 NaN 0.9 1];
plot(t,A,'o')
Использовать локальную функцию forwardfill (определяется в конце примера), чтобы заполнить недостающие пробелы с помощью предыдущего значения, не допускающего ошибок. Входы дескриптора функции включают в себя:
xs - значения данных, используемые для заполнения
ts - расположение значений, используемых для заполнения, относительно точек отбора проб;
tq - расположение отсутствующих значений относительно точек выборки;
n - количество значений в заполняемом зазоре
n = 2;
gapwindow = [10 0];
[F,TF] = fillmissing(A,@(xs,ts,tq) forwardfill(xs,ts,tq,n),gapwindow,'SamplePoints',t);Значение окна зазора [10 0] говорит fillmissing для рассмотрения одной точки данных перед отсутствующим промежутком и без точек данных после промежутка, так как предыдущее значение отсутствия ошибок расположено на 10 единиц перед промежутком. Входные значения дескриптора функции, определенные fillmissing для первого промежутка:
xs = 0.3
ts = 30
tq = [40 50]
Входные значения дескриптора функции для второго промежутка:
xs = 0.7
ts = 70
tq = 80
Постройте график исходных и заполненных данных.
plot(t,A,'o',t(TF),F(TF),'ro')

function y = forwardfill(xs,ts,tq,n) % Fill n values in the missing gap using the previous nonmissing value y = NaN(1,numel(tq)); y(1:min(numel(tq),n)) = xs; end
Создайте матрицу с отсутствующими записями и заполните столбцы (второе измерение) по одной строке за раз с помощью линейной интерполяции. Для каждой строки заполните начальные и конечные отсутствующие значения ближайшим отсутствующим значением в этой строке.
A = [NaN NaN 5 3 NaN 5 7 NaN 9 NaN;
8 9 NaN 1 4 5 NaN 5 NaN 5;
NaN 4 9 8 7 2 4 1 1 NaN]A = 3×10
NaN NaN 5 3 NaN 5 7 NaN 9 NaN
8 9 NaN 1 4 5 NaN 5 NaN 5
NaN 4 9 8 7 2 4 1 1 NaN
F = fillmissing(A,'linear',2,'EndValues','nearest')
F = 3×10
5 5 5 3 4 5 7 8 9 9
8 9 5 1 4 5 5 5 5 5
4 4 9 8 7 2 4 1 1 1
Заполните отсутствующие значения для табличных переменных с различными типами данных.
Создание таблицы, переменные которой включают categorical, double, и char типы данных.
A = table(categorical({'Sunny';'Cloudy';''}),[66;NaN;54],{'';'N';'Y'},[37;39;NaN],...
'VariableNames',{'Description' 'Temperature' 'Rain' 'Humidity'})A=3×4 table
Description Temperature Rain Humidity
___________ ___________ __________ ________
Sunny 66 {0x0 char} 37
Cloudy NaN {'N' } 39
<undefined> 54 {'Y' } NaN
Замените все отсутствующие записи значением из предыдущей записи. Поскольку нет предыдущего элемента в Rain переменная, отсутствующий вектор символов не заменяется.
F = fillmissing(A,'previous')F=3×4 table
Description Temperature Rain Humidity
___________ ___________ __________ ________
Sunny 66 {0x0 char} 37
Cloudy 66 {'N' } 39
Cloudy 54 {'Y' } 39
Замените NaN значения из Temperature и Humidity переменные в A с 0.
F = fillmissing(A,'constant',0,'DataVariables',{'Temperature','Humidity'})
F=3×4 table
Description Temperature Rain Humidity
___________ ___________ __________ ________
Sunny 66 {0x0 char} 37
Cloudy 0 {'N' } 39
<undefined> 54 {'Y' } 0
В качестве альтернативы используйте isnumeric для определения числовых переменных для работы.
F = fillmissing(A,'constant',0,'DataVariables',@isnumeric)
F=3×4 table
Description Temperature Rain Humidity
___________ ___________ __________ ________
Sunny 66 {0x0 char} 37
Cloudy 0 {'N' } 39
<undefined> 54 {'Y' } 0
Теперь заполните недостающие значения в A с указанной константой для каждой переменной таблицы, которые содержатся в массиве ячеек.
F = fillmissing(A,'constant',{categorical({'None'}),1000,'Unknown',1000})
F=3×4 table
Description Temperature Rain Humidity
___________ ___________ ___________ ________
Sunny 66 {'Unknown'} 37
Cloudy 1000 {'N' } 39
None 54 {'Y' } 1000
Создание вектора времени t в секундах и соответствующий вектор данных A который содержит NaN значения.
t = seconds([2 4 8 17 98 134 256 311 1001]); A = [1 3 23 NaN NaN NaN 100 NaN 233];
Заполнить только отсутствующие значения в A которые соответствуют максимальному размеру зазора в 250 секунд. Поскольку второй промежуток больше 250 секунд, NaN значение не заполнено.
F = fillmissing(A,'linear','SamplePoints',t,'MaxGap',seconds(250))
F = 1×9
1.0000 3.0000 23.0000 25.7944 50.9435 62.1210 100.0000 NaN 233.0000
A - Входные данныеВходные данные, указанные как вектор, матрица, многомерный массив, таблица или расписание.
Когда входной аргумент является массивом ячеек, он должен быть массивом ячеек символьных векторов. Если A является расписанием, то заполняются только табличные значения. Если связанный вектор времени строки содержит NaT или NaN значение, затем fillmissing приводит к ошибке. Время строк должно быть уникальным и перечисляться в порядке возрастания.
Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | table | timetable | categorical | datetime | duration | calendarDuration
v - Константа заполненияКонстанта заполнения, заданная как скаляр, вектор или массив ячеек.
v может быть вектором, когда A - матрица или многомерный массив, указывающий различное значение заливки для каждого рабочего размера. Длина v должен соответствовать длине рабочего размера.
v может быть массивом ячеек значений заливки, когда A - таблица или расписание, указывающее разное значение заливки для каждой переменной. Количество элементов в массиве ячеек должно соответствовать количеству переменных в таблице.
Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | cell | categorical | datetime | duration
method - Метод заполнения'previous' | 'next' | 'nearest' | 'linear' | 'spline' | 'pchip' | 'makima'Метод заливки, указанный как один из следующих:
| Метод | Описание |
|---|---|
'previous' | предыдущее не отсутствующее значение |
'next' | следующее не отсутствующее значение |
'nearest' | ближайшее не отсутствующее значение |
'linear' | линейная интерполяция соседних, не отсутствующих значений (числовых, duration, и datetime только типы данных) |
'spline' | кусочно-кубическая интерполяция сплайна (числовая, duration, и datetime только типы данных) |
'pchip' | формосохраняющая кусочно-кубическая интерполяция сплайна (числовая, duration, и datetime только типы данных) |
'makima' | модифицированная Akima кубическая эрмитовая интерполяция (числовая, duration, и datetime только типы данных) |
movmethod - Способ перемещения'movmean' | 'movmedian'Метод перемещения для заполнения отсутствующих данных, указанный как один из следующих:
| Метод | Описание |
|---|---|
'movmean' | Скользящее среднее по окну длины window (только числовые типы данных) |
'movmedian' | Перемещение медианы по окну длины window (только числовые типы данных) |
fillfun - Пользовательский метод заливкиПример: @(xs,ts,tq) myfun(xs,ts,tq)
Пользовательский метод заливки, заданный как дескриптор функции. Допустимые дескрипторы функций должны включать следующие три входных аргумента:
| Входной аргумент | Описание |
|---|---|
xs | Вектор, содержащий значения данных, используемые для заполнения. Длина xs должен соответствовать длине указанного окна. |
ts | Вектор, содержащий расположения значений, используемых для заполнения. Длина ts должен соответствовать длине указанного окна. ts является подмножеством вектора точек выборки. |
tq | Вектор, содержащий местоположения отсутствующих значений. tq является подмножеством вектора точек выборки. |
Функция должна возвращать скаляр или вектор той же длины, что и tq.
window - Длина окнаДлина окна для методов перемещения, заданная как положительный целочисленный скаляр, двухэлементный вектор положительных целых чисел, скаляр положительной длительности или двухэлементный вектор положительных длительностей. Окно определяется относительно точек образца.
Когда window является положительным целым скаляром, то окно центрировано относительно текущего элемента и содержит window-1 соседние элементы. Если window является четным, то окно центрировано относительно текущего и предыдущего элементов. Если window - двухэлементный вектор положительных целых чисел [b f], то окно содержит текущий элемент, b элементы назад, и f элементы вперед.
Когда A является расписанием или 'SamplePoints' указан как datetime или duration вектор, window должен иметь тип duration.
Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration
gapwindow - Длина окна зазораДлина окна промежутка для пользовательских функций заполнения, заданная как скаляр положительного целого числа, двухэлементный вектор положительных целых чисел, скаляр положительной длительности или двухэлементный вектор положительных длительностей. Окно зазора определяется относительно точек образца.
При указании дескриптора функции fillfun для метода заполнения значение gapwindow представляет фиксированную длину окна, которая окружает каждый промежуток отсутствующих значений во входных данных. Затем значение заполнения вычисляется с помощью fillfun с использованием значений в этом окне. Например, для точек образца по умолчанию t = 1:10 и данные A = [10 20 NaN NaN 50 60 70 NaN 90 100], длина окна gapwindow = 3 определяет первое окно как [20 NaN NaN 50] для которых fillfun используется для вычисления значения заполнения. Второе окно разрыва, для которого fillfun работает на [70 NaN 90].
Когда A является расписанием или 'SamplePoints' указан как datetime или duration вектор, window должен иметь тип duration.
Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration
dim - Размер для работы вдольРазмерность для работы, заданная как целочисленный скаляр. Если значение не указано, то по умолчанию используется первый размер массива, размер которого не равен 1.
Когда A - таблица или расписание, dim не поддерживается. fillmissing работает по каждой таблице или переменной расписания отдельно.
Рассмотрим двухмерный входной массив, A.
Если dim=1, то fillmissing заполняется A столбец за столбцом.

Если dim=2, то fillmissing заполняется A строка за строкой.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
fillmissing(A,'DataVariables',{'Temperature','Altitude'}) заполняет только столбцы, соответствующие Temperature и Altitude переменные входной таблицы'SamplePoints' - Выборочные точкиТочки выборки, указанные как пара, разделенная запятыми, состоящая из 'SamplePoints' и вектор. Точки выборки представляют расположение данных по оси X в A, и должны быть отсортированы и содержать уникальные элементы. Выборочные точки не нуждаются в равномерной выборке. Вектором точек выборки по умолчанию является [1 2 3 ...].
Примечание
Эта пара имя-значение не поддерживается, если входными данными являются timetable. В расписаниях всегда используется вектор времени строки в качестве точек выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы время строки содержало нужные точки выборки.
Движущиеся окна определяются относительно точек образца. Например, если t является вектором времен, соответствующих входным данным, то fillmissing(rand(1,10),'movmean',3,'SamplePoints',t) имеет окно, представляющее временной интервал между t(i)-1.5 и t(i)+1.5.
Когда вектор точек выборки имеет тип данных datetime или duration, то длина движущегося окна должна иметь тип duration.
Пример: fillmissing([1 NaN 3 4],'linear','SamplePoints',[1 2.5 3 4])
Типы данных: single | double | datetime | duration
'DataVariables' - Табличные переменные для работыvartype нижний индексПеременные таблицы для работы, указанные как пара, разделенная запятыми, состоящая из 'DataVariables' и один из вариантов в этой таблице. 'DataVariables' значение указывает переменные входной таблицы для заполнения. Другие переменные в таблице, не указанные 'DataVariables' пройти на выход без работы.
| Выбор | Описание | Примеры |
|---|---|---|
| Имя переменной | Вектор символов или скалярная строка, задающая имя переменной одной таблицы |
|
| Вектор имен переменных | Массив ячеек символьных векторов или строковый массив, где каждый элемент является именем переменной таблицы |
|
| Скаляр или вектор переменных индексов | Скаляр или вектор индексов табличных переменных |
|
| Логический вектор | Логический вектор, элементы которого соответствуют переменной таблицы, где |
|
| Дескриптор функции | Дескриптор функции, принимающий переменную таблицы в качестве входного значения и возвращающий логический скаляр |
|
vartype нижний индекс | Подстрочный индекс таблицы, созданный |
|
Пример: fillmissing(T,'linear','DataVariables',["Var1" "Var2" "Var4"])
'EndValues' - Метод обработки конечных точек'extrap' (по умолчанию) | 'previous' | 'next' | 'nearest' | 'none' | скалярМетод обработки конечных точек, указанный как разделенная запятыми пара, состоящая из 'EndValues' и один из 'extrap', 'previous', 'next', 'nearest', 'none'или постоянное скалярное значение. Метод заполнения конечной точки обрабатывает начальные и конечные отсутствующие значения на основе следующих определений:
| Метод | Описание |
|---|---|
'extrap' | то же, что и method |
'previous' | предыдущее не отсутствующее значение |
'next' | следующее не отсутствующее значение |
'nearest' | ближайшее не отсутствующее значение |
'none' | нет значения заливки |
| скаляр | постоянное значение (числовое, duration, и datetime только типы данных) |
Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime | duration
'MissingLocations' - Известный отсутствующий индикаторИзвестный отсутствующий индикатор, указанный как разделенная запятыми пара, состоящая из 'MissingLocations' и логический вектор, матрица или многомерный массив того же размера, что и A. Элементы индикатора могут быть true для указания отсутствующего значения в соответствующем расположении A или false в противном случае.
Типы данных: logical
'MaxGap' - Максимальный размер зазора для заполненияduration скаляр | calendarDuration скалярМаксимальный размер заполняемого промежутка, заданный как числовой скаляр, duration скаляр, или calendarDuration скаляр. Промежутки - это кластеры последовательных отсутствующих значений, размер которых является расстоянием между отсутствующими значениями, окружающими промежуток. Размер зазора вычисляется относительно точек выборки. Зазоры, меньшие или равные максимальному размеру зазора, заполняются, а зазоры, превышающие размер зазора, не заполняются.
Например, рассмотрим вектор y = [25 NaN NaN 100] использование точек образца по умолчанию [1 2 3 4]. Размер зазора в векторе вычисляется по точкам выборки как 4 - 1 = 3, так что MaxGap значение 2 оставляет отсутствующие значения неизменными, в то время как MaxGap значение 3 заполняет отсутствующие значения.
Для отсутствующих значений в начале или конце данных:
Одно отсутствующее значение в конце входных данных имеет размер зазора 0 и всегда заполняется.
Кластеры отсутствующих значений в начале или конце входных данных не полностью окружены отсутствующими значениями, поэтому размер зазора вычисляется с использованием ближайших существующих точек выборки. Для точек образца по умолчанию 1:N, это приводит к размеру зазора, который на 1 меньше, чем если бы тот же кластер находился в середине данных.
F - Заполненные данныеЗаполненные данные, возвращаемые в виде вектора, матрицы, многомерного массива, таблицы или расписания. F имеет тот же размер, что и A.
Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | table | timetable | categorical | datetime | duration | calendarDuration
TF - Индикатор заполненных данныхИндикатор заполненных данных, возвращаемый в виде вектора, матрицы или многомерного массива. TF является логическим массивом, где 1 (true) соответствует записям в F которые были заполнены и 0 (false) соответствует неизмененным записям. TF имеет тот же размер, что и A и F.
Типы данных: logical
Примечания и ограничения по использованию:
'spline' и 'makima' методы не поддерживаются.
Методы заполнения дескриптора функции не поддерживаются.
'MaxGap', 'SamplePoints', и 'MissingLocations' пары имя-значение не поддерживаются.
'DataVariables' пара имя-значение не может указать дескриптор функции.
'EndValues' пара «имя-значение» может указывать только 'extrap'.
Синтаксис fillmissing(A,movmethod,window) не поддерживается, когда A это высокое расписание.
Синтаксис fillmissing(A,'constant',v) необходимо указать скалярное значение для v.
Синтаксис fillmissing(A,___) не поддерживает переменные символьных векторов, когда A - высокий стол или высокое расписание.
Дополнительные сведения см. в разделе Массивы Tall.
Примечания и ограничения по использованию:
'MaxGap' пара имя-значение не поддерживается.
'makima' параметр не поддерживается.
Когда 'SamplePoints' значение имеет тип datetime или входные данные - это расписание с datetime время строки, только методы 'constant', 'movmean', и 'movmedian' поддерживаются.
Входы управления функцией для fillmethod аргументы не поддерживаются.
Очистить отсутствующие данные | filloutliers | ismissing | isnan | missing | rmmissing | standardizeMissing
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.