fillmissing

Заполните отсутствующие значения

Синтаксис

F = fillmissing(A,'constant',v)
F = fillmissing(A,method)
F = fillmissing(A,movmethod,window)
F = fillmissing(___,dim)
F = fillmissing(___,Name,Value)
[F,TF] = fillmissing(___)

Описание

пример

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,method) недостающие записи заливок с помощью метода, заданного method, который может быть одним из следующего:

  • 'previous' — предыдущее неотсутствующее значение

  • 'next' — следующее неотсутствующее значение

  • самый близкий самое близкое неотсутствующее значение

  • 'linear' — линейная интерполяция соседних, неотсутствующих значений (числовой, только duration и типы данных datetime)

  • сплайн кусочная интерполяция кубическим сплайном (числовой, только duration и типы данных datetime)

  • pchip сохраняющая форму кусочная интерполяция кубическим сплайном (числовой, только duration и типы данных datetime)

пример

F = fillmissing(A,movmethod,window) заливки недостающие записи с помощью движущегося среднего значения окна или медианы с длиной окна window. Например, fillmissing(A,'movmean',5) заполняет данные со скользящим средним значением с помощью длины окна 5.

пример

F = fillmissing(___,dim) задает размерность A, чтобы действовать вперед. По умолчанию fillmissing действует по первому измерению, размер которого не равняется 1. Например, если A является матрицей, то fillmissing(A,2) действует через столбцы A, заполняя недостающую строку данных строкой.

пример

F = fillmissing(___,Name,Value) задает дополнительные параметры для заполнения отсутствующих значений с помощью одного или нескольких аргументов пары "имя-значение". Например, если t является вектором временных стоимостей, то fillmissing(A,'linear','SamplePoints',t) интерполирует данные в A относительно времен в t.

пример

[F,TF] = fillmissing(___) также возвращает логический массив, соответствующий записям A, которые были заполнены.

Примеры

свернуть все

Создайте вектор, который содержит значения 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 в неоднородно выборочных данных.

Задайте вектор неоднородных точек выборки и оцените синусоидальную функцию по точкам.

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')

Используйте движущуюся медиану, чтобы заполнить недостающие числовые данные.

Создайте вектор точек выборки 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')

Создайте матрицу с недостающими записями и заливкой через столбцы (второе измерение) одна строка во время с помощью линейной интерполяции. Для каждой строки, заливка ведущие и запаздывающие отсутствующие значения с самым близким неотсутствующим значением в той строке.

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        ''         37   
    Cloudy             NaN        'N'        39   
    <undefined>         54        'Y'       NaN   

Замените все недостающие записи на значение от предыдущей записи. С тех пор нет никакого предыдущего элемента в переменной Rain, вектор отсутствующего символа не заменяется.

F = fillmissing(A,'previous')
F=3×4 table
    Description    Temperature    Rain    Humidity
    ___________    ___________    ____    ________

      Sunny            66         ''         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         ''         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         ''         37   
    Cloudy              0         'N'        39   
    <undefined>        54         'Y'         0   

Входные параметры

свернуть все

Входные данные, заданные как вектор, матрица, многомерный массив, таблица или расписание.

Если 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 может быть вектором, когда A является матричным или многомерным массивом. v может быть массивом ячеек, когда A является таблицей или расписанием.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | cell | categorical | datetime | duration

Метод заполнения, заданный как одно из следующего:

МетодОписание
'previous'предыдущее неотсутствующее значение
'next'следующее неотсутствующее значение
'nearest'самое близкое неотсутствующее значение
'linear'линейная интерполяция соседних, неотсутствующих значений (числовой, только duration и типы данных datetime)
'spline'кусочная интерполяция кубическим сплайном (числовой, только duration и типы данных datetime)
'pchip'сохраняющая форму кусочная интерполяция кубическим сплайном (числовой, только duration и типы данных datetime)
'makima'измененный Акима кубическая интерполяция Эрмита (числовой, только duration и типы данных datetime)

Движущийся метод, чтобы заполнить недостающие данные, заданные как одно из следующего:

МетодОписание
'movmean'Скользящее среднее значение по окну длины window (только типы числовых данных)
'movmedian'Движущаяся медиана по окну длины 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

Величина для работы, заданная как положительный целый скаляр. Если значение не задано, то по умолчанию это первый размер массива, не равный 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: fillmissing(A,'DataVariables',{'Temperature','Altitude'}) заполняет только столбцы, соответствующие переменным Temperature и Altitude входной таблицы

Метод для обработки конечных точек, заданных как пара, разделенная запятой, состоящая из '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

Точки выборки для метода заполнения, заданного как пара, разделенная запятой, состоящая из 'SamplePoints' и вектора. Точки выборки представляют местоположение данных в A, и должны быть отсортированы и содержать уникальные элементы. Точки выборки не должны быть однородно выбраны. Если A является расписанием, то вектор точек выборки по умолчанию является вектором времен строки. В противном случае вектором по умолчанию является [1 2 3 ...].

Движущиеся окна заданы относительно точек выборки. Например, если t является вектором времен, соответствуя входным данным, то fillmissing(rand(1,10),'movmean',3,'SamplePoints',t) имеет окно, которое представляет временной интервал между t(i)-1.5 и t(i)+1.5.

Когда вектор точек выборки имеет тип данных datetime или duration, затем движущаяся длина окна должна иметь, вводят duration.

Эта пара "имя-значение" не поддержана, когда входные данные являются расписанием.

Типы данных: double | single | datetime | duration

Табличные переменные, чтобы заполнить, заданный как пара, разделенная запятой, состоящая из 'DataVariables' и имени переменной, массива ячеек имен переменных, числового вектора, логического вектора или указателя на функцию. Значение 'DataVariables' указывает, какие столбцы входной таблицы заполнить, и может быть одно из следующего:

  • Вектор символов, задающий одно имя табличной переменной

  • Массив ячеек из символьных векторов, где каждый элемент является именем табличной переменной

  • Вектор индексов табличной переменной

  • Логический вектор, элементы которого каждый соответствует табличной переменной, где true включает соответствующую переменную и false, исключает его

  • Указатель на функцию, который возвращает логический скаляр, такой как @isnumeric

Пример: 'Age'

Пример: {'Height','Weight'}

Пример: @iscategorical

Типы данных: char | cell | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | function_handle

Известный недостающий индикатор, заданный как пара, разделенная запятой, состоящая из 'MissingLocations' и логического вектора, матрицы или многомерного массива, одного размера как A. Элементами индикатора может быть true, чтобы указать на отсутствующее значение в соответствующем месте A или false в противном случае.

Типы данных: логический

Выходные аргументы

свернуть все

Заполненные данные, возвращенные как вектор, матрица, многомерный массив, таблица или расписание. F одного размера как A.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | table | timetable | categorical | datetime | duration | calendarDuration

Заполненный индикатор данных, возвращенный как вектор, матрица или многомерный массив. TF является логическим массивом, где 1 (true) соответствует записям в F, которые были заполнены, и 0 (false) соответствует неизменным записям. TF одного размера как A и F.

Типы данных: логический

Расширенные возможности

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте