Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Уравнения в конечных разностях и фильтрация



MATLAB имеет спциальные функции для работы с уравнениями в конечных разностях и фи-льтрами. Эти функции работают главным образом с векторами. Векторы используются для хранения дискретных сигналов или последовательностей, а также для обработки сигналов и анализа данных. Для систем со многими входами, каждая строка матрицы соответствует од-ной временной точки выборки сигналов, где каждый вход описывается как один вектор-стол-бец.

Функция

y = filter(b, a, x)

обрабатывает данные в векторе x посредством фильтра, описываемого векторами aи b, вы-давая фильтрованные данные y. Функция filter может рассматриваться как эффективная реа-лизация уравнения в конечных разностях. Структура функции filter является обобщенной структурой фильтра, образованного при помощи линий задержки, который описывается приведенными ниже уравнениями в конечных разностях, гдеnесть индекс (номер) текущей выборки, naесть порядок полинома, описываемого вектором a, аnbесть порядок полино-ма,описываемого вектором b. Выход y(n) является линейной комбинацией текущего и пре-дыдущих входов, то есть x(n) x(n-1) ..., и предыдущих выходов y(n-1) y(n-2) ...

 

a(1) y(n) = b(1) x(n) + b(2) x(n-1) + … + b(nb) x(n-nb+1) –

- a(2) y(n-1) - … - a(na) y(n-na+1)

 

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

 

y(n) = (1/4) x(n) + (1/4) x(n-1) + (1/4) x(n-2) + (1/4) x(n-3)

 

Соответствующие векторы равны:

a = 1; b = [1/4 1/4 1/4 1/4];

 

Воспользуемся данными матрицы count из раздела Анализ данных и статистика. Для на-шего примера, обозначим первый столбец матрицы count через вектор x :

 

x = count(:, 1);

Усредненные за 4 часа данные могут быть легко вычислены при помощи приведенной выше функции y = filter(b, a, x).Сравним исходные и сглаженные данные, построив их на одном графике.

t = 1:length(x) ;

Plot(t, x, '-.', t, y, '-'); grid on

Legend('Original Data','Smoothed Data',2)

Исходные данные наблюдения представлены здесь штрих-пунктирной линией, а сглаженные за 4 часа данные – сплошной линией.

 

Для различных практических приложений, в специальном пакете Signal Processing Toolboxпредусмотрены многочисленные функции для анализа сигналов и проектирования дискрет-ных фильтров.

 

 

Многомерные Массивы

Многомерные массивы в системе MATLAB являются распространением обычных двумерных матриц. Как известно, матрицы имеют две размерности – строки (row) и столбцы (column).

 

 

Вы можете выделить любой элемент двумерной матрицы при помощи двух индексов, где первый является индексом (номером) строки, а второй – индексом столбца. Многомерные массивы имеют дополнительную индексацию. Например, трехмерные массивы имеют три индекса:

  • Первый индекс указывает размерность 1 , то есть строки.
  • Второй индекс указывает размерность 2. то есть столбцы.
  • Третий индекс указывает на размерность 3. В данном пособии используется концепция страницы (page)для представления размерности 3 и выше.

 

 

Для обращения, например, к элементу второй строки и третьего столбца на странице 2 нужно воспользоваться индексацией (2,3,2) (см. рисунок ниже).

Если вы добавляете размерности к массиву, вы также добавляете индексы. Четырехмерный массив, например, имеет 4 индекса. Первые два из них указывают на пару строка-столбец, а следующие два характеризуют третью и четвертую размерности.

 

 

Отметиим, что общие функции обращения с многомерными массивами находятся в директории datatypes.

 

Создание Многомерных Массивов

При создании многомерных массивов можно воспользоваться теми же приемами, которые используются для двумерных матриц.

 

Создание массивов с использованием индексации

Один из способов формирования многомерного массива состоит в создании двумерного массива и соответствующего его расширения. Например, начнем с простого двумерного массива А.

 

A = [5 7 8; 0 1 9; 4 3 6];

Аявляется массивом 3х3, то есть его размерности строк и столбцов равны трем. Для добавления третьей размерности к А запишем

 

A(:,:,2) = [1 0 4; 3 5 6; 9 8 7].

MATLAB выдаст

A(:, : ,1) =

5 7 8

0 1 9

4 3 6

A(:, :, 2) =

1 0 4

3 5 6

9 8 7

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

Расширение Многомерных Массивов.Для расширения любой размерности массива Анужно:

  • Увеличить или добавить соответствующий индекс и задать требуемые значения.
  • Добавить такое же количество элементов к соответствующим размерностям массива. Так, для числовых массивов все строки должны иметь одинаковое число элементов, все страницы должны иметь одинаковое число строк и столбцов и т.д.

Вы можете воспользоваться свойством скалярного распространения системы MATLAB, совместно с оператором двоеточия, для заполнения всей размерности единственным числом:

 

A(:, :, 3) = 5;

A(:, :, 3)

ans =

5 5 5

5 5 5

5 5 5

 

Для превращения Ав четырехмерный массив размерности 3х3х3х2 введите

 

A(:, :, 1, 2) = [1 2 3; 4 5 6; 7 8 9];

A(:, :, 2, 2) = [9 8 7; 6 5 4; 3 2 1];

A(:, :, 3, 2) = [1 0 1; 1 1 0; 0 1 1];

Отметим, что после первых двух вводов MATLAB добавляет в A требуемое количество нулей, чтобы поддержать соответствующие размеры размерностей (речь идет о первом элементе по четвертой размерности, то есть при четвертом индексе равном единице, массив Абудет содержать три нулевые матрицы размера 3х3).




©2015 studenchik.ru Все права принадлежат авторам размещенных материалов.