Сценарии, функции и графические средства среды MATLAB 5.x
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра “Информационные радиосистемы”
Сценарии, функции и графические
средства среды MATLAB 5.x
Методические указания к лабораторной работе № 1
по спецкурсу “Основы работы в системе MATLAB”
для студентов специальности 200700 “Радиотехника”
Нижний Новгород 2009
Составители: А.А.Кузин, Е.Н.Приблудова
УДК 621.325.5-181.4
Сценарии, функции и графические средства среды MATLAB 5.x: Метод. указания к лаб. работе №1 по спецкурсу “Основы работы в системе MATLAB” для студентов спец. 200700 / НГТУ; Сост.: А.А.Кузин, Е.Н.Приблудова. Н.Новгород, 2009. 18 с.
Изложены некоторые сведения о работе в системе MATLAB из режима командной строки, приведены краткие пояснения по созданию М‑сценариев и М‑функций. Определен порядок выполнения лабораторной работы, предложены варианты заданий различной сложности.
Редактор
Подп. к печ. __.__.__. Формат ______. Бумага газетная.Печать
офсетная. Печ.л. ___. Уч.-изд.л. ____. Тираж ___ экз. Заказ ___.
________________________
Нижегородский государственный технический университет.
Типография НГТУ. 603600, Н.Новгород,ул.Минина,24.
Нижегородский государственный
технический университет, 2009
Цель работы
Приобретение начальных навыков использования среды MATLAB 5.x:
• работа в режиме командной строки;
• создание, редактирование, отладка простых M-сценариев и M-функций;
• построение двумерных (2D) и трехмерных (3D) графиков.
Краткие сведения
Замечания:
• в примерах, приводимых далее, ввод пользователя выделен полужирным шрифтом, ответы системы MATLAB - обычным шрифтом, заголовки примеров ‑ полужирный курсив (наклонный), пояснительный текст ‑ обычный курсив;
• в угловые скобки заключены необязательные операторы или параметры;
• строки комментария начинаются с символа %.
1. Командная строка MATLAB
Командная строка MATLAB позволяет пользователю выполнять вычисления в интерактивном (диалоговом) режиме. В командной строке допускается ввод любых команд MATLAB. При этом результат вычислений отображается в командном окне непосредственно после завершения ввода команды.
Символ ‘;’ в конце команды подавляет вывод результата в командное окно. Это бывает необходимо при работе с матрицами большой размерности.
Последовательность вводимых команд сохраняется в командном буфере и может выбираться из него с помощью клавиш Up (Стрелка вверх) и Down (Стрелка вниз). Выполнение команды, выбранной из буфера, осуществляется по нажатию клавиши Enter (Ввод).
Пример 1. Работа в режиме командной строки
» a=[1,2,3,4,5]
a =
1 2 3 4 5
» b=[1;2;3;4;5]
b =
1
2
3
4
5
» c=b*a
c =
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
ввод вектора - строки а
ввод вектора ‑ столбца b
вычисление произведения матриц b*a
» for k=1:10
x(k)=sin(0.1*(k-1));
end
ввод цикла
вывод результата в командное окно запрещен
» x
x =
Columns 1 through 7
0 0.0998 0.1987 0.2955 0.3894 0.4794 0.5646
Columns 8 through 10
0.6442 0.7174 0.7833
»
просмотр массива x
2. Программирование в MATLAB
Если требуется выполнять большую последовательность команд или повторять группу команд для различных значений входных переменных, работа в режиме командной строки становится неудобной. Для облегчения работы MATLAB поддерживает два типа файлов: М‑сценарии и М‑функции.
2.1. М-сценарий (Script-файл)
Сценарий ‑ это внешний файл, содержащий последовательность операторов, т.е. команд и вызовов функций. Функции могут быть как встроенными в MATLAB, так и созданные пользователем.
Команда script задает заголовок сценария и записывается в первой строке, отличной от комментариев, далее следуют операторы системы MATLAB.
Пример 2. М-сценарий
<комментарии>
% пример М‑сценария
script
<операторы>
[mod_in,mod_out,arg_in,arg_out]=recu1_cal(betta)
<операторы>
Запуск сценария осуществляется командой “Файл-Выполнить сценарий”
2.2. М-функции
Функции являются М-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.
М-функция включает следующие компоненты:
• необязательные строки комментария;
• обязательную строку определения функции, в которой указано имя M‑функции и список входных и выходных параметров;
• тело функции – последовательность операторов, реализующие вычисление M-функции (переменные, используемые в теле функции – это локальные переменные, в отличие от переменных script-файлов, которые являются глобальными).
Строка определения процедуры-функции
function[<список выходных переменных>]=имя функции(<список входных переменных>)
Списки входных и выходных аргументов могут отсутствовать, длина имени функции не должна превышать 31 символ.
Пример 3. М-функция
<комментарии>
% функция с именем recu1_cal имеет один входной параметр betta и
% четыре выходных - mod_in, mod_out, arg_in, arg_out
function [mod_in,mod_out,arg_in,arg_out]=recu1_cal(betta)
<оператор>
. . . – тело M-функции
<оператор>
2.3. Циклы и ветвления
2.3.1. Оператор цикла с неизвестным числом повторений
while выражение
<оператор>
. . .
<оператор>
end
Операторы, указанные в теле цикла, выполняются, пока выражение истинно.
Пример 4. Цикл while
»fact=1;
k=1;
while fact<1e5
fact=fact*k;
k=k+1;
if n>100
break;
end
end
2.3.2. Оператор цикла с известным числом повторений
for переменная цикла = начальное значение : <приращение> : конечное значение
<оператор>
. . .
<оператор>
end
Операторы, указанные в теле цикла, выполняются заданное число раз. При этом переменная цикла последовательно принимает все значения от начального до конечного с приращением после каждого прохода цикла. См. пример 1.
2.3.3. Оператор условного ветвления
if выражение 1
<оператор 1>
<оператор 2>
<оператор 3>
end
Если выражение 1 истинно, выполняется оператор 1, в противном случае проверяется выражение 2. Если выражение 2 истинно, выполняется оператор 2, если ложно - оператор 3.
Пример 5. Условное ветвление
» for k=1:20
x=k*pi/10-pi;
if x~=0
y(k)=sin(x)/x;
else
y(k)=1;
end
end
2.4. Графические функции
2.4.1. Создание окна для вывода графика
figure
Команда открывает новое окно для вывода графиков.
2.4.2. Разбиение графического окна
subplot(m,n,p)
Данная команда выполняется перед обращением к функциям построения графиков для разбиения графического окна на несколько подокон и указания в какое именно подокно будет выводиться график.
Значение m указывает, на сколько частей разбивается окно по горизонтали, n – по вертикали, а p – номер подокна, куда будет выводиться очередной график.
Пример 6. Разбиение графического окна
subplot(2,1,1)
Команда subplot разбивает окно на 2 подокна по вертикали и последующий вывод графика будет производиться в первое подокно.
2.4.3. Двумерный график в линейном масштабе
plot(y)
plot(x,y)
plot(x1,y1,s1,x2,y2,s2,…)
Команда plot(y) строит график функции y, в качестве значений аргумента функции выводится индекс элемента вектора y.
Команда plot(x,y) соответствует построению обычной функции, когда одномерный массив x соответствует значениям аргумента, а одномерный массив y – значениям функции.
Команда plot(x1,y1,s1,x2,y2,s2,…) позволяет объединить на одном графике несколько функций y1(x1),y2(x2),…, определив для каждой из них свой способ отображения (см.табл.2).
Пример 7. Вывод двух графиков
subplot(2,1,2)
plot(j,mod_in,'-',j,mod_out,'- -')
Команда plot выводит в одной системе координат два графика из массивов mod_in, mod_out разными стилями линий во второе подокно.
2.4.4. Двумерные графики с логарифмическими осями
semilogx(…)
semilogy(…)
loglog(…)
Команды аналогичны plot, но имеют логарифмический масштаб осей: semilogx – по оси x, для semilogy – по оси y и loglog – по обеим осям. Входные параметры такие же, как в plot.
2.4.5. Двумерный график в полярных координатах
polar(theta, rho)
polar(theta,rho,s)
Команда отображает график в полярных координатах. Параметры:
theta – угол в радианах;
rho – радиус;
s – стиль линии графика.
Пример 8. График в полярных координатах
» x=-pi:0.01*pi:pi;
» y=2*cos(3*x);
» polar(x,y)
2.4.6. Трехмерная графика
plot3(x,y,z)
mesh(z) mesh(x,y,z)
surf(z) surf(x,y,z)
Команда plot3 строит график в трехмерных координатах, используя в качестве координат точек одноименные элементы матриц x,y и z. Точки соединяются прямой линией. Матрицы x,y,z должны иметь одинаковую размерность.
Пример 9. Команда plot3
» t=0:pi/50:10*pi;
» plot3(sin(t),cos(t),t)
Команды mesh(…) и surf(…) отличаются способом отображения.
Команды mesh(z), surf(z) отображают значения двумерной матрицы z, при этом в качестве координаты x берется индекс столбца матрицы z, в качестве координаты y – индекс строки матрицы z.
Пример 10. Команда surf
» z=randn(100);
» surf(z)
Команды mesh(x,y,z) и surf(x,y,z) отображают двумерную матрицу z, использую в качестве координат x и y соответствующие векторы. Требуется согласование размерностей матрицы и векторов, так для матрицы z[m,n] вектора должны быть x[n] и y[m].
2.5. Ввод параметров программы
Пример 11. Ввод параметра
» x=input('Введите параметр x: ')
Введите параметр x: 123
x =
123
»
2.6. Отладка программ
Отладчик предназначен для выявления ошибок при программировании в системе MATLAB. Сеанс отладки начинается с установки контрольных точек, т.е. специальным образом помеченных строк в тексте файла, при достижении которых выполнение приостанавливается. Это дает возможность просматривать и изменять содержимое рабочих областей и выполнять M‑файл построчно.
После установки контрольных точек запуск программы осуществляется командой “Инструменты – Run”. Программа выполняется до первой контрольной точки.
Просмотр рабочих областей выполняются по команде “Вид – Рабочие документыа” из меню отладчика, либо нажатием кнопки “Рабочая область” в командном окне MATLAB. При этом открывается дополнительное окно, содержащее список переменных рабочих областей. Двойным щелчком мыши на символе переменной можно просмотреть ее значения.
В режиме отладки при установке курсора мыши на имя переменной в окне редактирования около курсора высвечивается ее текущее значение.
Сценарий и функция используют различные типы переменных. Сценарий создает глобальные переменные, которые существуют все время выполнения программы. Функции используют локальные переменные, которые существуют только пока выполняется функция и при выходе из функции уничтожаются.
Порядок выполнения
Часть 1.
В режиме командной строки системы MATLAB выполнить следующее:
• сформировать комплексный вектор размерности (1х100) – модель отсчетов комплексной огибающей шума;
• ввести единичный вектор размерности (1х15);
• вычислить свертку двух сформированных векторов;
• используя различный стиль линий, построить графики:
• в первом подокне – нормированной амплитуды исходного случайного процесса и результата свертки;
• во втором подокне – фазы исходного и выходного процессов;
• вычислить преобразование Фурье исходного и результирующего процессов;
• создать второе графическое окно и, используя различный стиль линий, построить графики:
• в первом подокне – амплитудные спектры входного и выходного сигналов;
• во втором подокне – фазовые спектры сигналов;
• полученные результаты продемонстрировать преподавателю.
Часть 2.
В соответствии с вариантом задания создать М‑сценарий, вызывающий М‑функцию.
М‑сценарий должен осуществлять:
• ввод требуемых параметров;
• вызов М‑функции с соответствующими входными и выходными аргументами;
• отображение результатов М‑функции в одном или нескольких окнах.
М‑функция должна выполнять только вычисления.
ВАРИАНТЫ ЗАДАНИЙ
Вариант 1
Работа фильтра первого порядка описывается разностным уравнением y(n) = x(n) + b * y(n‑1), где b – коэффициент обратной связи. Исследовать прохождение через фильтр белого шума, для этого:
• ввести длину реализации N и коэффициент обратной связи b;
• сформировать входную реализацию шума как комплексный массив x(1N);
• вызвать М‑функцию, входными параметрами которой будут массив x, коэффициент b и длина реализации N, а в качестве выходных параметров – комплексный массив выходных значений y и преобразования Фурье от входного и выходного массивов;
• в первом графическом окне различными цветами построить графики нормированного модуля и фазы входного и выходного сигналов;
• во втором графическом окне построить графики нормированного модуля и фазы преобразований Фурье от входного и выходного сигналов;
• полученные результаты представить преподавателю.
Вариант 2
Работа фильтра первого порядка описывается разностным уравнением y(n) = x(n) + b * y(n‑1), где b – коэффициент обратной связи. Построить импульсную и частотные характеристики фильтра, для этого:
• ввести длину реализации N и коэффициент обратной связи b;
• сформировать входную реализацию как действительный нулевой массив x(1N);
• присвоить элементу x(1) значение 1 (аналог ‑функции);
• вызвать М‑функцию, входными параметрами которой будут массив x, коэффициент b и длина реализации N, а в качестве выходных параметров – действительный массив выходных значений y и преобразования Фурье от выходного массива;
• в различных подокнах построить графики нормированного выходного сигнала, нормированного модуля и фазы преобразования Фурье от выходного сигнала;
• полученные результаты представить преподавателю.
Вариант 3
Выходной сигнал фильтра вычисляется по формуле , где b(k) – коэффициенты фильтра. Построить импульсную и частотные характеристики фильтра, для этого:
• ввести длину реализации N и число коэффициентов фильтра M;
• сформировать входную реализацию как действительный нулевой массив x(1N);
• присвоить элементу x(1) значение 1 (аналог ‑функции);
• вызвать М‑функцию, входными параметрами которой будут массив x, число коэффициентов фильтра M и длина реализации N, а в качестве выходных параметров – действительный массив выходных значений y и преобразования Фурье от выходного массива;
• M‑функция вычисляет вектор коэффициентов фильтра b(i) = 1/M, i = 1 … M;
• в различных подокнах построить графики нормированного выходного сигнала, нормированного модуля и фазы преобразования Фурье от выходного сигнала;
• полученные результаты представить преподавателю.
Вариант 4
Выходной сигнал фильтра вычисляется по формуле , где b(k) – коэффициенты фильтра. Построить импульсную и частотные характеристики фильтра, для этого:
• ввести длину реализации N и число коэффициентов фильтра M;
• сформировать входную реализацию как действительный нулевой массив x(1N);
• присвоить элементу x(1) значение 1 (аналог ‑функции);
• вызвать М‑функцию, входными параметрами которой будут массив x, число коэффициентов фильтра M и длина реализации N, а в качестве выходных параметров – действительный массив выходных значений y и преобразования Фурье от выходного массива;
• M‑функция вычисляет вектор коэффициентов фильтра , i = 1 … M;
• в различных подокнах построить графики нормированного выходного сигнала, нормированного модуля (в логарифмическом масштабе по y) и фазы преобразования Фурье от выходного сигнала;
• полученные результаты представить преподавателю.
Вариант 5
Выходной сигнал фильтра вычисляется по формуле , где b(k) – коэффициенты фильтра. Построить импульсную и частотные характеристики фильтра, для этого:
• ввести длину реализации N и число коэффициентов фильтра M;
• сформировать входную реализацию как действительный нулевой массив x(1N);
• присвоить элементу x(1) значение 1 (аналог ‑функции);
• вызвать М‑функцию, входными параметрами которой будут массив x, число коэффициентов фильтра M и длина реализации N, а в качестве выходных параметров – действительный массив выходных значений y и преобразования Фурье от выходного массива;
• M‑функция вычисляет вектор коэффициентов фильтра , i = 1 … M;
• в различных подокнах построить графики нормированного выходного сигнала, нормированного модуля (в логарифмическом масштабе по y) и фазы преобразования Фурье от выходного сигнала;
• полученные результаты представить преподавателю.
Вариант 6*
Работа фильтра первого порядка описывается разностным уравнением y(n) = x(n) + b * y(n‑1), где b – коэффициент обратной связи. Построить семейство импульсных характеристик фильтра по параметру b, для этого:
• ввести длину реализации N, минимальное и максимальное значения коэффициента обратной связи (b_min и b_max) и количество характеристик в семействе С;
• сформировать входную реализацию как действительный нулевой массив x(1N);
• присвоить элементу x(1) значение 1 (аналог ‑функции);
• вызвать М‑функцию, входными параметрами которой будут массив x, коэффициенты b_min и b_max, длина реализации N и количество характеристик C, а в качестве выходных параметров – двумерный действительный массив импульсных реакций размерностью (NC);
• график семейства импульсных реакций построить в трехмерных координатах;
• полученные результаты представить преподавателю.
Вариант 7*
Работа фильтра первого порядка описывается разностным уравнением y(n) = x(n) + b * y(n‑1), где b – коэффициент обратной связи. Построить семейство по параметру b реакций фильтра на ступенчатое входное воздействие, для этого:
• ввести длину реализации N, минимальное и максимальное значения коэффициента обратной связи (b_min и b_max) и количество характеристик в семействе С;
• сформировать входную реализацию как действительный единичный массив x(1N);
• элементы с x(1) до x(N/2) обнулить;
• вызвать М‑функцию, входными параметрами которой будут массив x, коэффициенты b_min и b_max, длина реализации N и количество характеристик C, а в качестве выходных параметров – двумерный действительный массив выходных реакций фильтра размерностью (NC);
• график семейства импульсных реакций построить в трехмерных координатах;
• полученные результаты представить преподавателю.
Вариант 8**
Выходной сигнал фильтра вычисляется по формуле , где b(k) – коэффициенты фильтра. Построить семейство по параметру M нормированных амплитудно‑частотных характеристики фильтра, для этого:
• ввести длину реализации N, минимальное и максимальное значение параметра (M_min и M_max соответственно) и количество характеристик в семействе C;
• сформировать входную реализацию как действительный нулевой массив x(1N);
• присвоить элементу x(1) значение 1 (аналог ‑функции);
• вызвать М‑функцию, входными параметрами которой будут массив x, минимальное и максимальное число коэффициентов фильтра M, длина реализации N и количество характеристик C, а в качестве выходных параметров – действительный массив амплитудно‑частотных характеристик, полученных как модуль преобразования Фурье от импульсной реакции;
• M‑функция вычисляет вектор коэффициентов фильтра , i = 1 … M;
• график семейства импульсных реакций построить в трехмерных координатах;
• полученные результаты представить преподавателю.
Таблица 1. Некоторые функции MATLAB
randn
генератор белого шума
max
вычисление максимума
abs
вычисление модуля
figure
см.п.2.4.1
subplot
см.п.2.4.2
plot
см.п.2.4.3
title
выводит название графика
xlim
устанавливает диапазон оси X
fft
вычисляет преобразование Фурье
zeros
формирует массив нулей
ones
формирует массив единиц
conv
вычисляет свертку двух векторов
semilogy
см.п.2.4.4
plot3
см.п.2.4.6
grid
управляет отображением сетки графика
ylim
устанавливает диапазон оси Y
xlabel
выводит подпись оси X
ylabel
выводит подпись оси Y
angle
вычисляет аргумент комплексного числа
floor
округление до ближайшего целого
length
возвращает размер вектора
Таблица 2. Способы отображения линий
Тип линии
Тип точки
Цвет
Непрерывная -
Штриховая - -
Двойной пунктир :
Штрих-пунктирная -.
Точка .
Плюс +
Звездочка *
Кружок о
Крестик х
Желтый y
Фиолетовый m (magenta) с+к
Голубой c (cian) с+з
Красный r
Зеленый g
Синий b
Белый w
Черный k blak
Примеры результатов работы программ
Рис.1. К варианту 1, параметры: длина реализации 128, коэффициент обратной связи 0.95
Рис.2. К варианту 2, параметры: длина реализации 128, коэффициент обратной связи -0.9
Рис.3. К варианту 3, параметры: длина реализации 64, число коэффициентов фильтра 5
Рис.4. К варианту 4, параметры: длина реализации 128, число коэффициентов фильтра 17
Рис.5. К варианту 5, параметры: длина реализации 64, число коэффициентов фильтра 11
Рис.6. К варианту 6, параметры: длина реализации 128, минимальный КОС -0.9, максимальный КОС 0.95, число характеристик 10
Рис.7. К варианту 7, параметры: длина реализации 128, минимальный КОС -0.9, максимальный КОС 0.95, число характеристик 10
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
1. Потемкин В.Г. MATLAB 5 для студентов.–М.:ДИАЛОГ‑МИФИ, 1998.- 314 с.
2. Потемкин В.Г. Система MATLAB. –М.:ДИАЛОГ‑МИФИ, 1997.