Заполните отсутствующие значения
заполняет отсутствующие записи массива или таблицы постоянным значением 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 - Входные данныеВходные данные, заданные как вектор, матрица, многомерный массив, таблица или timetable.
Когда входной параметр является массивом ячеек, это должен быть массив ячеек с векторами символов. Если 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' | модифицированная кубическая эрмитова интерполяция Акима (число, 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. В Timetables всегда используется вектор времени строки в качестве точек выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы время в строке содержало требуемые точки выборки.
Движущиеся окна заданы относительно точек выборки. Для примера, если 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' и один из опций в этой таблице. The '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 - Заполненные данныеЗаполненные данные, возвращенные в виде вектора, матрицы, многомерного массива, таблицы или timetable. 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
Указания и ограничения по применению:
The 'spline' и 'makima' методы не поддерживаются.
Методы заливки указателя на функцию не поддерживаются.
The 'MaxGap', 'SamplePoints', и 'MissingLocations' пары "имя-значение" не поддерживаются.
The 'DataVariables' пара "имя-значение" не может задать указатель на функцию.
The 'EndValues' пара "имя-значение" может задавать только 'extrap'.
Синтаксис fillmissing(A,movmethod,window) не поддерживается, когда A является длинное расписание.
Синтаксис fillmissing(A,'constant',v) необходимо задать скалярное значение для v.
Синтаксис fillmissing(A,___) не поддерживает вектора символов переменные, когда A является длинная таблица или длинное расписание.
Для получения дополнительной информации см. Раздел «Длинные массивы»
Указания и ограничения по применению:
The 'MaxGap' Пара "имя-значение" не поддерживается.
The 'makima' опция не поддерживается.
Когда 'SamplePoints' Значение имеет тип datetime или входные данные являются расписанием с datetime время строки, только методы 'constant', 'movmean', и 'movmedian' поддерживаются.
Входы указателя на функцию для fillmethod аргумент не поддерживается.
Очистка отсутствующих данных | filloutliers | ismissing | isnan | missing | rmmissing | standardizeMissing
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.