Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИНТЕЗ ЦИФРОВЫХ ФИЛЬТРОВ С ИСПОЛЬЗОВАНИЕМ ПАКЕТА ПРОГРАММ MATLAB.DOC
Скачиваний:
150
Добавлен:
01.05.2014
Размер:
1.41 Mб
Скачать

5.6. Скалярные функции

Определенные функции выполняются над скалярами, а в применении к матрицам – поэлементно. Наиболее общие из этих функций:

sin

asin

exp

abs

round

cos

acos

log (натуральный)

sqrt

floor

tan

atan

rem (остаток)

sign

ceil

5.7. Векторные функции

В MATLAB существуют функции, которые выполняются над векторами (строками или столбцами), но могут выполняться и над матрицами размером mn (m  2) по столбцам, порождая в результате вектор-строку, содержащий результаты обработки каждого столбца. Вот некоторые из этих функций:

max

sum

median

any

sort

min

prod

mean

all

std

Например, max(max(A)), а не max(A) даст максимальный элемент матрицы A.

5.8. Mатричные функции

Главное достоинство MATLAB заключается в ее матричных функциях. Наиболее полезные из них:

  • eig – собственные числа и собственные векторы;

  • chol – факторизация Холецкого;

  • svd – сингулярное разложение;

  • inv – обращение матрицы;

  • lu – LU-факторизация;

  • qr – QR-факторизация;

  • hess – форма Хессенберга;

  • schur – разложение Шура;

  • expm – матричная экспонента;

  • sqrtm – матричный квадратный корень;

  • poly – характеристический полином;

  • det – определитель;

  • size – размер;

  • cond – число обусловленности по норме L2;

  • rank – ранг матрицы.

Функции MATLAB могут иметь один или несколько выходных аргументов. Например, функция y=eig(A) или просто eig(A) сгенерирует вектор из собственных чисел A, а [U,D]= eig(A) – матрицу U, столбцами которой будут собственные векторы A и диагональную матрицу D с собственными числами на диагонали.

5.9. Подматрицы и форма записи с двоеточием

Векторы и подматрицы часто используются в MATLAB для манипуляций с довольно сложными данными. Форма записи с двоеточием (которая используется и для генерации векторов, и для образования подматриц) и индексация с помощью векторов позволяют эффективно работать с этими объектами. Интенсивное использование этих возможностей позволяет свести к минимуму применение замедляющих работу MATLAB циклов и сделать программу простой и удобной для чтения. Однако для овладения ими необходимы дополнительные усилия.

Выражение 1:5 (встречавшееся ранее в операторе for) обозначает вектор-строку [1 2 3 4 5]. Числа не обязательно должны быть целыми, а шаг может быть не единичным. Например, 0.2:0.2:1.2 – это запись вектора-строки [0.2 0.4 0.6 0.8 1.0 1.2], а 5:–1:1 – вектора-строки [5 4 3 2 1].

Следующие операторы генерируют таблицу синусов:

x = [0.0:0.1:2.0]';

y = sin(x);

[x y]

Заметим, что sin(x) – скалярная операция, поэтому вектор y будет строиться из x поэлементно.

Форма записи через двоеточие может быть использована для доступа к подматрицам данной матрицы. Например, A(1:4, 3) – это вектор-столбец, состоящий из первых четырех элементов третьего столбца матрицы A. Двоеточие означает, что строка или столбец должны быть взяты целиком:

  • A(:, 3) – третий столбец матрицыA;

  • A(1: 4, :) – первые четыре строки матрицыA.

Произвольно объединенные векторы могут использоваться как индексы: A(:, [2 4]) состоит из второго и четвертого столбцов матрицы A. Такая индексация может быть использована в обоих частях оператора присваивания: A(:, [2 4 5]) = B(:, 1:3) заменяет второй, четвертый и пятый столбцы A первыми тремя столбцами B.

Заметим, что вся измененная матрица A будет отображена на экране.

Умножим справа второй и четвертый столбцы матрицы A на матрицу размером 22 [1 2; 3 4]:

A(:, [2,4]) = A(:, [2 4])*[1 2; 3 4].

И опять вся измененная матрица отобразится на экране.

Чтобы оценить все преимущества этой формы записи, сравните приведенные здесь операторы MATLAB с программами на Паскале, фортране или Си, выполняющими те же действия.