48968 (Система математических расчетов MATLAB), страница 11

2016-07-30СтудИзба

Описание файла

Документ из архива "Система математических расчетов MATLAB", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48968"

Текст 11 страницы из документа "48968"

обрабатывает данные в векторе 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).

Создание масивом с применением функций MATLAB-а.

Вы можете использовать для создания многомерных массивов такие функции MATLAB-а как randn, ones, и zeros, совершенно аналогично способу используемому для двумерных матриц. Каждый вводимый аргумент представляет размер соответствующей размерности в результирующем массиве. Например, для создания массива нормально распределенных случайных чисел размера 4х3х2 следует записать:

B = randn(4,3,2).

Для создания массива, заполненного единственным постоянным значением можно восполь-зоваться функцией repmat. Эта функция копирует массив (в нашем случае массив размера 1х1) вдоль вектора размерностей массива.

B = repmat(5,[3 4 2])

B(:, :, 1) =

5 5 5 5

5 5 5 5

5 5 5 5

B(:, :, 2) =

5 5 5 5

5 5 5 5

5 5 5 5

Внимание! Любая размерность массива может иметь размер 0, что просто дает пустой массив (empty array) . Так, размер 10х0х20 является допустимым размером многомерного массива.

Создание многомерного массива при помощи функции cat.

Функция cat дает простой путь построения многомерных массивов; она объединяет набор массивов вдоль заданной размерности.

B = cat (dim,A1,A2...)

где А1, А2 и т.д. являются объединяемыми массивами. а dim есть размерность, вдоль которой они объединяются. Например, для создания нового массива из двух двумерных матриц при помощи функции cat запишем

B = cat (3, [2 8; 0 5], [1 3; 7 9])

что дает трехмерный массив с двумя страницами

B(:, :, 1) =

2 8

0 5

B(:, :, 2) =

1 3

7 9

Функция cat принимает любые комбинации существующих и новых данных. Более того, вы можете осуществлять вложение данных функций. Приведенные ниже строки, к примеру, формируют четырехмерный массив:

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

B = cat (3, [3 5; 0 1], [5 6; 2 1])

D = cat (4, A, B, cat (3, [1 2; 3 4], [4 3; 2 1])).

Функция cat автоматически добавляет, при необходимости, единичные индексы между размерностями. Например, для создания массива размера 2х2х1х2 можно ввести

C = cat (4, [1 2; 4 5], [7 8; 3 2])

В данном случае функция cat вводит нужное число единичных размерностей для создания четырехмерного массива, чья последняя размерность не является единичной. Если бы аргумент dim был бы равен 5, последняя запись привела бы к массиву размера 2х2х1х1х2. Это добавляет еще одну единицу в индексации массива. Для обращения к значению 8 в четырехмерном случае нужно применить следующую индексацию

Индекс единичной размерности

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

Для получения информации об имеющихся многомерных массивах можно воспользоваться стандартными командами size (дает размер массива), ndims (дает количество размерностей) и whos (последняя команда дает подробную информацию о всех переменных рабочего пространства системы MATLAB). Для вышеприведенного примера мы получим

size(C)

ans =

2 2 1 2

ndims(C)

ans =

4

Индексация

Многие концепции, используемые в двумерном случае, распространяются также на много-мерные массивы. Для выделения (обращения) к какому-либо одному элементу многомерного массива следует воспользоваться целочисленной индексацией. Каждый индекс указывает на соответствующую размерность: первый индекс на размерность строк, второй индекс на раз-мерность столбцов, третий на первую размерность страниц и так далее. Рассмотрим массив случайных целых чисел nddata размера 10х5х3:

nddata = fix (8*randn (10, 5, 3));

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

Вы можете также использовать векторы как массив индексов. В этом случае каждый элемент вектора должен быть допустимым индексом, то есть должен быть в пределах границ, опре-деленных для размерностей массива. Так, для обращения к элементам (2,1), (2,3), и (2,4) на странице 3 массива nddata, можно записать

nddata (2, [1 3 4], 3).

Оператор двоеточия и индексирование многомерных массивов.

Стандартная индексация MATLAB-а при помощи оператора двоеточия (colon) применима и в случае многомерных массивов. Например, для выбора всего третьего столбца страницы 2 массива nddata используется запись nddata(:, 3, 2). Оператор двоеточия также полезен и для выделения определенных подмножеств данных. Так, ввод nddata(2:3,2:3,1) дает массив (мат-рицу) размера 2х2, который является подмножеством данных на странице 1 массива nddata. Эта матрица состоит из данных второй и третьей строки и сторого и третьего столбца первой стриницы многомерного массива. Оператор двоеточия может использоваться для индексации с обеих сторон записи. Например, для создания массива нулей размера 4х4 записываем:

C = zeros (4,4)

Теперь, чтобы присвоить значения подмножества 2х2 массива nddata четырем элементам в центре массива С запишем

C(2:3,2:3) = nddata (2:3,1:2,2)

Устранение неопределенностей в многомерной индексации

Некоторые выражения, такие как

A(:, :, 2) = 1:10

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

A(1,:,2) = 1:10.

Изменение формы (Reshaping)

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

B = reshape (A, [s1 s2 s3 ...] )

где s1, s2, и так далее характеризуют желаемый размер для каждой размерности преобразо-ванной матрицы. Отметим, что преобразованный массив должен иметь то же число элемен-тов, что и исходный массив (иными словами, произведение размеров массивов должно быть неизменным).

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее