Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_manual.rtf
Скачиваний:
326
Добавлен:
21.03.2016
Размер:
9.57 Mб
Скачать

Diff(a)

MATLAB возвращает

ans =

-11 5 -3 1 4 -1

Помимо вычисления первой разности, функция diff является полезной для определения опре-деленных характеристик вектора. Например, вы можете использовать diff для определения, является ли вектор монотонным (значения элементов или всегда возрастают или убывают), или имеет ли он равные приращения и т.д. Следующая таблица описывает несколько различ-ных путей использования функции diff с одномерным вектором x.

Применение (тест)

Описание

diff(x) == 0

Тест на определение повторяющихся элементов

all(diff(x) > 0)

Тест на монотонность

all(diff(diff(x)) == 0)

Тест на опредедление равных приращений

Обработка данных

В данном разделе рассматривается как поступать с:

  • Отсутствующими значениями

  • Выбросами значений или несовместимыми («неуместными») значениями

Отсутствующие значения

Специальное обозначение NaN, соответствует в MATLAB-е нечисловое значение. В соответ-ствие с принятыми соглашениями NaN является результатом неопределенных выражений та-ких как 0/0. Надлежащее обращение с отсутствующими данными является сложной пробле-мой и зачастую меняется в различных ситуациях. Для целей анализа данных, часто удобно использовать NaN для представления отсутствующих значений или данных которые недос-тупны. MATLAB обращается со значениями NaN единообразным и строгим образом. Эти значения сохраняются в процессе вычислений вплоть до конечных результатов. Любое мате-матическое действие, производимое над значением NaN, в результате также производит NaN. Например, рассмотрим матрицу, содержащую волшебный квадрат размера 3х3, где це-нтральный элемент установлен равным NaN.

a = magic(3); a(2,2) = NaN;

a =

8 1 6

3 NaN 7

4 9 2

Вычислим сумму элементов всех столбцов матрицы:

sum(a)

ans =

15 NaN 15

Любые математические действия над NaN распространяют NaN вплоть до конечного резуль-тата. Перед проведением любых статистических вычислений вам следует удалить все NaN-ы из имеющихся данных. Вот некоторые возможные пути выполнения данной операции.

Программа

Описание

i = find( ~ isnan(x));

x = x(i)

Найти индексы всех эементов вектора, не равных

NaN, и затем сохранить только эти элементы

x = x (find( ~ isnan(x)))

Удалить все NaN-ы из вектора

x = x ( ~ isnan(x));

Удалить все NaN-ы из вектора (быстрее).

x (isnan(x)) = [ ];

Удалить все NaN-ы из вектора

X (any(isnan(X’)), :) = [ ];

Удалить все строки матрицы X содержащие NaN-ы

Внимание. Для нахождения нечисловых значений NaN вам следует использовать специаль-ную функцию isnan, поскольку при принятом в MATLAB-е соглашении, логическое сравне-ние NaN == NaN всегда выдает 0. Вы не можете использовать запись x(x==NaN) = [ ] для удаления NaN-ов из ваших данных.

Если вам часто приходится удалять NaN-ы, воспользуйтесь короткой программой, записан-ной в виде М-файла.

function X = excise(X)

X(any(isnan(X')),:) = [ ];

Тогда. напечатав

X = excise(X);

вы выполните требуемое действие (excise по английски означает вырезать)

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.