МИНИСТЕРСТВО ПО РАЗВИТИЮ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

И КОММУНИКАЦИЙ РЕСПУБЛИКИ УЗБЕКИСТАН

ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Факультет «Телекоммуникационные технологии»

 

Кафедра «Технологии мобильной связи»

Методическое пособие на тему

«Использование программы Matlab в учебном процессе»

Составитель ст.преп. Хатамов А.П.

 

Ташкент 2015

 

Система Matlab представляет собой мощное средство решения инженерно-технических задач. Она является универсальным программным продуктом, позволяющим решать широкий спектр задач от символьных вычислений до сложных инженерных расчетов.

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

Данное методическое пособие позволит студентам познакомиться с этими основными средствами и приобрести навыки их использования.

 

Введение

  

Система MatLAB создана фирмой MathWork Inc. (США, г. Нейтик, штат Массачусетс). Хотя впервые эта система  начала использоваться в конце  70-х лет, расцвет ее применения начался в конце  80-х. Последние версии MatLAB, - это чрезвычайно развитые системы,  которые  содержат  огромную  совокупность  процедур  и функций,  необходимых  инженеру  и  научному  работнику  для  осуществления  сложных  численных расчетов, моделирования поведения технических и физических систем, оформления результатов этих расчетов в наглядном виде.

Система MatLAB (сокращение от MATrix LABoratory - матричная лаборатория) представляет собой интерактивную компьютерную систему для выполнения инженерных и научных расчетов, ориентированную на работу с массивами данных.  Система  предполагает  возможность  обращения  к  программам,  которые написаны на языках FORTRAN и C.

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

Основной  объект  системы MatLAB - прямоугольный  числовой  массив (матрица), который допускает комплексные элементы. Использование матриц не требует явного указания их размеров. Система позволяет решать многие вычислительные задачи за значительно меньшее время, чем то, которое необходимо для написания соответствующих программ  на языках FORTRAN, BASIC и C.

Система MatLAB выполняет операции с векторами и матрицами даже в режиме  непосредственных  вычислений  без  какого-либо  программирования.  Ею можно  пользоваться  как  мощнейшим  калькулятором,  в  котором  наряду с обычными арифметическими и алгебраическими действиями могут использоваться такие сложные операции, как обращение матрицы, вычисление ее собственных значений и векторов, решение систем линейных алгебраических уравнений и многое другое.  Тем  не  менее,  характерная  основная  особенность  системы – ее "открытость", то есть легкость ее модификации и адаптации к конкретным задачам пользователя. Пользователь может ввести в систему любую новую команду, оператор или функцию и пользоваться потом ими так же просто, как и встроенными операторами и функциями.

В базовый набор слов системы входят: спецзнаки; знаки арифметических и  логических  операций;  арифметические,  тригонометрические  и  некоторые  специальные математические функции; функции быстрого преобразования Фурье и фильтрации; векторные и матричные функции; средства для работы с комплексными числами; операторы построения графиков в декартовой и полярной системах координат, трехмерных поверхностей и т.п.

Система MatLAB имеет  собственный  язык  программирования. Запись программ в системе является традиционной и потому обычной для большинства пользователей персональных компьютеров. И вдобавок система  дает  возможность  редактировать  программы  при  помощи  любого  привычного для пользователя текстового редактора.

MatLAB имеет широкие возможности для работы с сигналами, для расчета и проектирования аналоговых и цифровых фильтров, для построения их частотных, импульсных и  переходных  характеристик.  В  наличии  и  средства  для спектрального анализа и синтеза, в частности, для реализации прямого и обратного преобразования Фурье. Благодаря этому система довольно удобна для проектирования электронных устройств.

Робота в среде MatLab может осуществляться в двух режимах: 

·       в режиме калькулятора, когда вычисления осуществляются сразу после набора очередного оператора или команды MatLab;

·       путем вызова имени программы, написанной на языке MatLAB, предварительно составленной и записанной на диске.

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

Система MATLAB

 

Система MATLAB состоит из основных частей:

 

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

 

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

 

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

 

Программный  интерфейс. Это  библиотека,  которая  позволяет  писать программы  на  Си  и  Фортране,  которые  взаимодействуют  с  MATLAB.  Она включает средства для вызова программ из MATLAB (динамическая связь), вызывая  MATLAB  как  вычислительный  инструмент  и  для  чтения-записи файлов.

 

 

Знакомство со средой MATLAB

 

Система  MATLAB    является  интерактивной  системой  для  выполнения инженерных и научных расчетов, ориентированной на работу с массивами данных. 

В системе MATLAB можно выделить следующие основные функциональные элементы:

1.    Командное окно для интерактивного ввода команд с клавиатуры.  

 

Рис. 1. Интерфейс среды MATLAB

2. Рабочее  пространство, содержащее данные, с которыми производится работа. Данные представляются в виде переменных -массивов.

3.  Библиотеки  (Toolboxes)  функций  и  команд  MATLAB,  включая стандартные  команды  MATLAB

4. Редактор m-файлов, предназначенный для создания и редактирования скриптов и функций MATLAB

5.  Справочная система MATLAB.

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

Все  переменные  в  системе  MATLAB  представляются  в  виде  массивов.

 

Поэтому каждая переменная обладает следующими свойствами:

1.  Размерность  массива  –  количество  измерений  (для  вектора

     размерность  равна  1 – одномерный массив; для   прямоугольной матрицы – 2 – двумерный массив).

2.  Длина массива – количество элементов массива.

3.  Размер массива по каждому измерению.

4.  Тип данных элементов массива (таблица 1).

 

Скалярные  переменные  в  системе  MATLAB  представляются  как  массивы единичной длины. При  создании  числовой  переменной  тип  данных  по  умолчанию устанавливается в числовой с плавающей точкой (тип double). Переменные числового типа могут принимать кроме числовых значений значения Inf, -Inf и NaN, которые означают бесконечность, минус бесконечность и не числовое значение соответственно.

 

Таблица 1. Типы данных среды MATLAB

Тип

Описание

int8   int16   int32   int64 

8, 16, 32, 64 – битные знаковые целые числа

uint8   uint16   uint32 uint64

8, 16, 32, 64 – битные без знаковые целые числа

single  double 

Числа с плавающей точкой с единичной и с двойной точностью

logical 

Двоичные числа: 1 (истина),

0 (ложь)

char

Символьные переменные

cell

Массив ячеек разных типов данных

 

 Также имеются зарезервированные переменные среды и управляющие функции MATLAB (таблицы 2 и 3).

 

 

 

 

Таблица 2. Зарезервированные переменные среды MATLAB

 

Имя переменной

Описание

pi

Содержит значения числа «пи»

i, j

Комплексная единица

eps

Относительная точность числовых значений с плавающей точкой

ans

Содержит результат выполнения последней команды

%

Символ, обозначающий начало комментария, вся строка после этого символа может содержать любой текст

;

Символ, обозначающий переход к следующему действию без отображения результатов команды в диалоговое окно

Inf

Указание бесконечности (например, возникает в результате деления на ноль)

Nan

 

Указание нечислового значения (например, неопределенность ноль деленный на ноль)

 

Таблица  3. Управляющие функции

Название функции или

команды

Описание

help

Выводит описание функции или команды в командное окно

lookfor

Выводит список функций в описание которых входит ключевое слово

which

Дает путь m-файла в котором содержится указанная функция

load

Загружает переменные рабочей области MATLAB из файла *.mat

save

Сохраняет переменные рабочей области MATLAB в файл *.mat

clear

Удаляет переменные в рабочей области (пример: clear all)

clc

Отчищает командное окно

echo

Включает/выключает вывод результата, по умолчанию включен

Создание и работа с переменными

 

При  создании  переменных  в  системе  MATLAB  нет  необходимости определять  явно  имя  переменной,  тип  данных  или  размерность  массива.

Когда MATLAB встречает новое имя переменной, автоматически создается переменная с таким именем  и  автоматически  выделяется  необходимое количество памяти.

Для  этого могут  использоваться скобки,  которые осуществляют объединение скаляров или массивов, при этом  в  результате  получается  также  массив  (см.  примеры  в  таблице  4).

Элементы  внутри  скобок  могут  быть  разделены  запятой, либо точкой запятой, в зависимости от того, по какому измерению осуществляется объединение. В системе MATLAB принято, что для прямоугольных матриц (двумерных  массивов)  первое  измерение  определяет  число  строк, а  второе измерение – число столбцов. При использовании квадратных скобок запятая разделяет строки, а точка с запятой разделяет столбцы.

Задание  массивов  состоящих  из  диапазона  равноотстоящих  чисел  может быть  осуществлено  с  помощью  символа  двоеточия  a:b:c.  При  этом указывается  значение  первого  элемента  массива  a,  шаг приращения b и максимально возможное  значение  (минимально  возможное,  если  b отрицательно) в массиве.

Также  существует  ряд  функций,  которые  позволяют  создавать  и  заполнять массивы разного размера (см. таблицу 5).

 

Таблица 4. Примеры создания переменных

Команды 

Описание

NumVar = 0.0321;

 

Команда создает числовую переменную с именем NumVar, и значением которой является число 0.0321

Text = ‘Текст’;

 

Команда создает символьную переменную с именем Text, и значением которой является строка ‘Текст’

A = [1; 2];

 

Команда создает переменную с именем A, и значением которой является массив размером 2X1:

     1

     2

B = [1, 2];

 

Команда создает переменную с именем B, и значением которой является массив размером 1X2:

     1     2

D = 1:5;

 

Команда создает переменную с именем D, и значением которой является массив размером 1X5:

    1     2     3     4     5

F = zeros(2, 3);

 

Команда создает переменную с именем F, и значением которой

является массив размером 2X3, заполненный нулями

 

Таблица 5. Функции создания элементарных массивов

Название функции или

команды

Описание

eye

 

Создает единичную матрицу, например, команда eye(2) создаст матрицу размером 2X2:

     1     0

     0     1

ones(m, n)

Создание массива размером mxn заполненного единицами

zeros(m, n)

Создание массива размером mxn заполненного нулями

rand(m, n)

 

Создание массива размером mЧn заполненного случайными числами равномерно распределенными в интервале (0; 1)

randn(m, n)

 

Создание массива размером mЧn заполненного случайными числами нормально распределенными с нулевым средним и единичной дисперсией

 

 

Доступ к отдельным элементам массива осуществляется с помощью указания индексов в скобках.  Индексы  (номера)  по  разным  измерениям отделяются  запятой.  Таким  образом  если  создан  двухмерный  массив  с именем  Matrix,  то  доступ  к  элементу  массива,  который  находится  на пересечении  m-ой  строки  и  n-ого  столбца  осуществляется  следующим образом:

Element = Matrix(m, n);

Доступ  получить  можно  не  только  к  отдельному  элементу  массива,  но  и  к целому  блоку.  Для  этого  задаются  не  отдельные  индексы,  а  массивы индексов. Например команда

Block = Matrix([2, 3], [4, 5]);

запишет  в  переменную  Block  квадратную  матрицу,  образованную  из элементов массива Matrix, которые расположены на пересечении 2 и 3 строки и 4 и 5 столбца массива Matrix.

Кроме  того,  вместо  индексов  можно  указывать  специальные  символы. Символ двоеточия указывает, что необходимо взять весь диапазон индексов по  данному  измерению.  Символ  end  указывает,  что  необходимо  взять последний элемент по данному измерению.

Например команда

Vector = Matrix(:, end);

запишет в переменную Vector последний столбец массива Matrix.

 В таблице 6 приведены основные функции для определения параметров переменных

 

Таблица 6. Основные функции для определения параметров переменных

 

Название функции или

команды

Описание

length(A)

Определяет длину вектора A

ndims(A)

Определяет количество измерений массива A numel(A)  Определяет количество элементов массива A

size(A)

Определяет размер массива A

disp(A)

Выводит значение переменной A в командное окно

isscalar(A)

 

Определяет, является ли переменная A скаляром

Математические выражения и функции

 

Большинство  функций  в  системе  MATLAB  предназначены  для  работы  с массивами. Поэтому математическим функциям, таким как sin, log, в системе MATLAB можно в качестве аргумента передавать массив числовых значений.

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

В таблицах 7 и  8 приведены операторы среды MATLAB и некоторые элементарные математические функции.

 

Таблица 7. Операторы среды MATLAB

 

Операторы

Описание

(   )

Задают порядок вычислений

* /

Операции умножения и деления

^

Возведение в степень

`

Операция транспонирования

+  -

Сложение и вычитание

<  >

Операnтор меньше или больше

<=  >=

Операnтор меньше или равно и больше или равно

= ~=

Операnтор  равно и неравно

&

Оператор «и»

|

Оператор «или»

~

Оператор «не»

 

Таблица 8. Некоторые элементарные математические функции

 

Название функции или

команды

Описание

sin

Вычисляет синус

cos

Вычисляет косинус

tan

Вычисляет тангенс

atan

Вычисляет арктангенс

exp

Возведение в степень

log

Натуральны логорифм

sqrt

Корень квадратный

round

Округление числа до целого

Графические команды и функции

 

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

Для отображения графической информации создается отдельное окно. Такое окно может быть создано командой figure. Каждая высокоуровневая функция выводит графическую информацию  в текущее графическое окно. При этом содержимое окна  перезаписывается.  Если  такое  окно  не  создано высокоуровневые функции автоматически создают его.

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

 

Таблица 9. Некоторые высокоуровневые графические функции

Название функции или

команды

Описание

plot

Строит линии или точки в линейном масштабе

loglog 

Строит линии или точки в логарифмическом масштабе

polar

Строит линии или точки в полярных координатах

 

Таблица 10. Некоторые низкоуровневые графические функции

Название функции или

команды

Описание

figure

Графическое окно

title

Имя графика

xlable

Метка по оси X

axis

Изменение масштаба по оси

subplot

Разделения окна на несколько областей

При  работе с графическими  функциями  необходимо  понимать  объект - ориентированную структуру графики. Для вывода графических  элементов создается ряд объектов:

1.  Графическое окно (figure).

2.  Система координат (axes).

3. Различные графические элементы (line, patch, text, surface, image, light)

Каждому из этих объектов ставиться в соответствие  идентификатор (дескриптор - handle). Знание идентификатора  объекта, дает возможность читать и изменять свойства объекта с помощью функций get и set.

 Рассмотрим пример использования введенных выше понятий для написания программы в MATLAB

 

 

Пример использования функции MATLAB

 

Формирование радиосигнала с использованием двоичной

амплитудной модуляции (BASK).

% Задаем частоту дискретизации

SamplingRate = 1000;

 

% Определяем период дискретизации

SamplingPeriod = 1/SamplingRate;

 

% Задаем информационную последовательность битов 

Bits = [1, 0, 0, 1, 1, 0, 1, 0, 1, 1];

 

% Определяем количество передаваемых битов

NoBits = length(Bits);

 

% Задаем длительность одного бита в секундах

TBit = 1;

 

% Определяем длительность всей последовательности битов в секундах

SignalDuration = T * NoBits;

 

% Формируем массив значений времени в секундах, длина массива соответствует количеству дискрет в создаваемом сигнале

Time = 0 : SamplingPeriod : SignalDuration;

 

% Формируем сигнал последовательности битов, используя функцию интерполяции

SignalBits = interp1(0.5 : NoBits, Bits, Time, 'nearest', 'extrap');

 

% Задаем период несущего синусоидального сигнала в секундах

TSin = 0.1;

 

% Определяем частоту несущего синусоидального сигнала в герцах

SinRate = 1/TSin;

 

% Формируем несущий синусоидальный сигнал

SignalSin = sin( 2 * pi * SinRate * Time );

 

% Модулируем несущий синусоидальный сигнал сигналом последовательности бит

ModulatedSignal = SignalBits .* SignalSin;

 

close all   % закрываем окна для рисования открытые ранее

 

% Рисуем график модулированного сигнала

H = figure;                                         % Создаем окно для рисования

set(gcf,'Units', 'normalized');             % Определяем

set(H, 'Position', [0.1 0.03 0.8 0.25]);% положения окна

plot(Time, ModulatedSignal);           % Рисуем сигнал

axis([0 SignalDuration -1.5 1.5]);      % Изменяем масштаб отображения

title('Modulated signal');                    % Задаем название графика

xlabel('Time, seconds');                     % Задаем метку временной оси

 

% Рисуем график синусоидального сигнала

H = figure;                                         % Создаем окно для рисования

set(gcf,'Units', 'normalized');             % Определяем

set(H, 'Position', [0.1 0.33 0.8 0.25]);% положения окна

plot(Time, SignalSin);                       % Рисуем сигнал

axis([0 SignalDuration -1.5 1.5]);      % Изменяем масштаб отображения

title('Sinusoidal signal');                     % Задаем название графика

xlabel('Time, seconds');                      % Задаем метку временной оси

% Рисуем график сигнала последовательности бит

H = figure;                                         % Создаем окно для рисования

set(gcf,'Units', 'normalized');             % Определяем

set(H, 'Position', [0.1 0.63 0.8 0.25]);% положения окна

plot(Time, SignalBits);                      % Рисуем сигнал

axis([0 SignalDuration -0.5 1.5]);      % Изменяем масштаб отображения

title('Bits signal');                               % Задаем название графика

xlabel('Time, seconds');                      % Задаем метку временной оси

Результаты программы графиков модулированного и синусоидального сигнала а также сигнала последовательности бит наглядно представлен на рисунках 2,3 и 4.

 

 

Рис.2. Результат графического отображения модулированного сигнала

 

 

Рис.3. Результат графического отображения синусоидального сигнала

 

 

Рис.4. Графическое отображения сигнала последовательности бит

 

Литература

 

1.    Максимей И.В. Имитационное моделирование на ЭВМ.-М.: Радио и связь. 1988 г.

2.    Лузина Л.И. Компьютерное моделирование. Учебное пособие. Томск 2001 г.

3.    Ануфриев И, Смирнов А. Matlab 7. Полное руководство. Санкт-Петербург, 2005 г.

4.    Васильев В.В.Математическое и компьютерное моделирование процессов и систем. Учебное пособие. Украина, 2008 г.

 

 

Методическое пособие на тему «Использование программы Matlab в учебном процессе»

 

Работа рассмотрена и одобрена на заседании   кафедры ТМС (протокол __________).

 

Составитель:  ст.преп. Хатамов А.П.

Редактор  Ибраимов Р.Р.

Корректор  Хамдам –Зода Л.Х.

 

Бумага офсетная. Заказ №    .

Тираж      .

Отпечатано в типографии ТУИТ

Ташкент 700084, ул.А.Тимура - 108