logo
Самоучитель по Maple

11. Типовые матричные операции пакета расширения Matlab

Типовые матричные операции пакета расширения Matlab

Большинство функций пакета Matlab (не путайте с системой MATLAB, имя которой надо записывать прописными буквами) реализуют самые обычные матричные операции, что и иллюстрируют приведенные ниже примеры.

Зададим матрицу М в формате Maple:

Ниже даны примеры транспонирования матрицы, ее инвертирования, вычисления детерминанта и собственных значений матрицы:

Можно проверить, является ли матрица квадратной:

Можно также проверить, является ли данная матрица матрицей системы MATLAB:

Здесь надо иметь в виду, что форматы матриц в системах Maple и MATLAB различны. Выполним LU-преобразование матрицы:

Таким образом, видно, что пакет Maple в данном случае реализует типовые матричные операции, но средствами системы MATLAB. Загрузка последней происходит автоматически при загрузке пакета Matlab. Если система MATLAB не установлена на вашем компьютере, то доступ к функциям пакета Matlab будет отсутствовать, a Maple 7 при попытке использования данных функций будет выдавать сообщения об ошибках.

20.gif

21.gif

22.gif

23.gif

24.gif

12. Выделение сигнала на фоне шумов

Выделение сигнала на фоне шумов

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

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

> num := 1500:

Time := [seq(.03*t. t=1..num)]:

data := [seq((3.6*cos(Time[t]) + cos(6*Time[t])), t=1..num)]:

p1ots[pointp1ot](zip((x,y)->[x,y],Time,data), style=line);

График сигнала представлен на рис. 15.1.

Рис. 15.1.График исходного сигнала

Теперь с помощью генератора случайных чисел наложим на этот сигнал сильный «шум» (слово «шум» взято в кавычки, поскольку речь идет 6 математическом моделировании шума, а не о реальном шуме физической природы):

> tol := 10000:

r := rand(0..to1):

noisyjlata :=[seq(r()/(tol)*data[t], t=l..num)]:

plots[pointp1ot](zip((x,y)->[x,y],T1me,noisy_data), sty1e=1ine);

Нетрудно заметить, что теперь форма сигнала настолько замаскирована шумом (рис. 15.2), что можно лишь с трудом -догадываться, что сигнал имеет периодическую составляющую малой амплитуды. Эта высокочастотная составляющая сигнала скрыта шумом.

Подвергнем полученный сигнал (в виде временной зависимости) прямому преобразованию Фурье, реализованному функцией fft:

> ft := fft(noisy_data):

> VectorOptions(ft, datatype):

complex8

Эта операция переводит задачу из временного представления сигнала в частотное, что позволяет использовать частотные методы анализа сигнала. Выделим, к примеру, действительную и мнимую части элементов вектора ft и проверим его размер:

25.gif

26.gif

27.gif