Заполните отсутствующие значения
заливки недостающие записи массива или таблицы с постоянным значением F
= fillmissing(A
,'constant',v
)v
. Если A
матричный или многомерный массив, затем v
может быть или скаляр или вектор. Когда v
вектор, каждый элемент задает значение заливки в соответствующем столбце A
. Если A
таблица или расписание, затем v
может также быть массив ячеек, элементы которого содержат значения заливки для каждой табличной переменной.
Отсутствующие значения заданы согласно типу данных A
:
NaN
'double'
единственный
длительность
, и calendarDuration
NaT
datetime
<missing>
Строка
<undefined>
категориальный
' '
'char'
{''}
ячейка
из символьных массивов
Если 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
fillmethod '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' vartype
индексТочки выборки в виде разделенной запятой пары, состоящей из 'SamplePoints'
и или вектор из значений точки выборки или одна из опций в следующей таблице, когда входные данные таблица. Точки выборки представляют x - местоположения оси данных, и должны быть отсортированы и содержать уникальные элементы. Точки выборки не должны быть однородно произведены. Векторный [1 2 3 ...]
значение по умолчанию.
Когда входные данные являются таблицей, можно задать точки выборки как табличную переменную с помощью одной из следующих опций.
Опция для табличного входа | Описание | Примеры |
---|---|---|
Имя переменной | Вектор символов или скалярная строка, задающая одно имя табличной переменной |
|
Скалярный переменный индекс | Скалярный индекс табличной переменной | 3 |
Логический вектор | Логический вектор, элементы которого каждый соответствует табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который берет табличную переменную в качестве входа и возвращает логический скаляр, который должен быть |
|
vartype индекс | Табличный индекс, сгенерированный |
|
Примечание
Эта пара "имя-значение" не поддерживается, когда входными данными является 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])
Пример: fillmissing(T,'linear','SamplePoints',"Var1")
Типы данных: single
| double
| datetime
| duration
DataVariables
— Табличные переменные, чтобы работать сvartype
индексТабличные переменные, чтобы работать с в виде разделенной запятой пары, состоящей из 'DataVariables'
и одна из опций в этой таблице. 'DataVariables'
значение указывает который переменные входной таблицы заполнить. Другие переменные в таблице, не заданной 'DataVariables'
передайте до выхода без управления.
Опция | Описание | Примеры |
---|---|---|
Имя переменной | Вектор символов или скалярная строка, задающая одно имя табличной переменной |
|
Вектор из имен переменных | Массив ячеек из символьных векторов или массив строк, где каждым элементом является имя табличной переменной |
|
Скаляр или вектор из переменных индексов | Скаляр или вектор из индексов табличной переменной | 1 [1 3 5] |
Логический вектор | Логический вектор, элементы которого каждый соответствует табличной переменной, где |
|
Указатель на функцию | Указатель на функцию, который берет табличную переменную в качестве входа и возвращает логический скаляр |
|
vartype индекс | Табличный индекс, сгенерированный |
|
Пример: fillmissing(T,'linear','DataVariables',["Var1" "Var2" "Var4"])
EndValues
— Метод для обработки конечных точек'extrap'
(значение по умолчанию) | 'previous'
| 'next'
| 'nearest'
| 'none'
| скалярМетод для обработки конечных точек в виде разделенной запятой пары, состоящей из 'EndValues'
и один из 'extrap'
, 'previous'
, 'next'
самый близкий
'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
в противном случае.
Типы данных: логический
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
.
Типы данных: логический
Указания и ограничения по применению:
'spline'
и 'makima'
методы не поддерживаются.
Методы заполнения указателя на функцию не поддерживаются.
'MaxGap'
'SamplePoints'
, и 'MissingLocations'
пары "имя-значение" не поддерживаются.
'DataVariables'
пара "имя-значение" не может задать указатель на функцию.
'EndValues'
пара "имя-значение" может только задать 'extrap'
.
Синтаксис fillmissing(A,movmethod,window)
не поддерживается когда A
длинное расписание.
Синтаксис fillmissing(A,'constant',v)
должен задать скалярное значение для v
.
Синтаксис fillmissing(A,___)
не поддерживает переменные вектора символов когда A
длинная таблица или длинное расписание.
Для получения дополнительной информации см. Раздел "Высокие массивы".
Указания и ограничения по применению:
'MaxGap'
пара "имя-значение" не поддерживается.
'makima'
опция не поддерживается.
Когда 'SamplePoints'
значение имеет, вводят datetime
или входные данные являются расписанием с datetime
времена строки, только методы 'constant'
movmean
, и 'movmedian'
поддерживаются.
Указатель на функцию вводит для fillmethod
аргумент не поддерживается.
backgroundPool
или ускорьте код с Parallel Computing Toolbox™ ThreadPool
.Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
ismissing
| standardizeMissing
| rmmissing
| filloutliers
| isnan
| missing
| Очистить недостающие данные
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.