Заполните отсутствующие значения
заполняет отсутствующие записи массива или таблицы постоянным значением 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.