fillmissing

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

Описание

пример

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,method) заливки недостающие записи с помощью метода заданы method. Например, fillmissing(A,'previous') заливки недостающие записи с предыдущей ненедостающей записью A.

пример

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

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

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

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

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

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

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

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

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

  • Таблица vartype индекс

Пример: 'Age'

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

Пример: @iscategorical

Пример: vartype('numeric')

Известный недостающий индикатор в виде разделенной запятой пары, состоящей из '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