- •Лабораторная работа №1
- •Методические указания.
- •Панель инструментов содержит стандартный набор значков «быстрых кнопок», а палитра компонент открыта на вкладке Standard.
- •Шаг 10. В теле функции наберите строку:
- •Аналогично перетащите кнопки Copy, Paste, Undo и разместите на поле панели инструментов:
- •Лабораторная работа № 2
- •1. Цель работы
- •2. Порядок выполнения работы
- •2.1. Консольное приложение
- •2.2. Понятие класса
- •2.3. Настройка панели инструментов
- •2.4. Добавление кода
- •2.5. Сохранение файлов проекта
- •2.6. Метки класса
- •2.7. Создание объекта класса в динамической памяти
- •2. Порядок выполнения работы.
- •3. Методические указания.
- •4. Задания к лабораторной работе
- •4.1. Порядок выполнения работы.
- •4.2. Методические указания.
- •5. Содержание отчета
- •6. Контрольные вопросы
- •Литература
- •Лабораторная работа №3
- •1. Цель работы
- •2. Постановка задачи
- •3. Порядок выполнения работы
- •Основные свойства формы
- •Основные события формы
- •Основные события компонента tButton:
- •4. Задания к лабораторной работе
- •Варианты заданий
- •5. Содержание отчета по лабораторной работе
- •6. Контрольные вопросы
- •Лабораторная работа №4
- •Цель работы
- •Порядок выполнения работы
- •Форма 1
- •Форма 2
- •Форма 3
- •Методические рекомендации по выполнению задания «Калькулятор»
- •Методические материалы по теме «Медиаплеер»
- •2.Постановка задачи:
- •3.Порядок выполнения задания:
- •Методические рекомендации к выполнению задания «Просмоторщик рисунков»
- •Создание меню
- •Шаг 12.1. По аналогии с созданием пункта Toolbar1 создайте самостоятельно пункт меню Statu Bar1 для отображения или закрытия панели состояния
- •Запрещенные пункты меню
- •Всплывающее меню
- •Диалоговые окна открытия и сохранения файла
- •Проектирование строки состояния
- •Подсказки на строке состояния
- •Прокрутка в рабочей области формы
- •Прокрутка в отдельной прямоугольной области
- •Полосы прокрутки
- •Кнопки-инструменты
- •Картинки на кнопках
- •Взаимоисключающие кнопки
- •Обработка нажатий кнопок
- •Подсказки к кнопкам
- •Управление видимостью панели инструментов
- •Методические материалы по теме «Текстовый редактор»
- •Методические материалы выполнения задания «Графический редактор»
- •2.Постановка задачи:
- •1. Основные теоретические сведения
- •1.1. Работа с ядром пакета прикладных программ mathlab
- •Выражение
- •Элементарные функции в mathlab (Большими буквами обозначены массивы, малыми – элемент массива или число)
- •Первой строки на три (б), объединение 3-й и 2-й строк (в)
- •Name(список_параметров)
- •Var1-выражение
- •1.2. Работа с пакетом Control System Toolbox
- •Создание объекта в tf-форме. Пусть требуется создать объект с передаточной функцией вида
- •Исследование переходной функции и весовой функции
- •Исследование реакции на произвольно заданное воздействие
- •Исследование афчх – амплитудно-фазовой частотной характеристики
- •Исследование лчх – логарифмических частотных характеристик
- •2. Порядок выполнения лабораторной работы
- •2.2. Содержание отчета
- •3. Контрольные вопросы
Первой строки на три (б), объединение 3-й и 2-й строк (в)
18. Вычисляемое выражение сразу после завершения вычисления можно ввести вновь в текущее место ввода нажатием кнопки «стрелка вверх» ↑ (для изменения величин аргументов или коррекции выражения) .
Повторное нажатие кнопки ↑ заменит текущие условия на условия, им предшествующие: этот процесс можно повторять многократно, добиваясь вызова в место ввода все более ранних вычислительных условий.
Ранее вычислявшееся выражения можно быстро вставить в место ввода путем выделения его левой кнопкой мышки (кнопка далее отпускается) и небольшого протягивания его вниз повторно нажатой левой кнопкой: MATHLAB сам вставит выделенное выражение.
19. Ранее примененную функцию можно вставить в командное окно через копирование её из окна Command History (Протокола команд), в котором все ранее использованные команды и функции сохраняются до тех пор, пока пользователь не удалит их.
20. Чтобы сохранить данные вычислений в окне управления (выражения, программы, результаты или их части) для повторного вызова и работы, необходимо:
• выделить данные,
• скопировать их в буфер,
• вызвать редактор-отладчик m-файлов через меню «Файл-Создать-m-файл», либо командой edit в командном окне,
• вставить скопированные данные в открывшийся новый m-файл и сохранить его через меню редактора File-Save As… («Файл-Сохранить как»).
21. Для продолжения вычислительной работы в окне управления с данными, сохраненными по правилам п.20, необходимо через меню «Файл-Открыть» открыть требуемый файл, выделить в нем требуемые для работы фрагменты, скопировать их в буфер и вставить в текущее место ввода окна управления.
Рассмотрим применение перечисленных выше правил для выполнения вычислений.
Использование переменных. Результат вычислений можно присвоить любой переменной, определенной пользователем. Имя переменной должно начинаться с буквы и может состоять из букв, цифр и символа подчеркивания. Система MATHLAB различает строчные и прописные буквы в именах переменных (A и a – это разные переменные). Знак = соответствует операции присваивания. Значения переменных, вычисленные в течение текущего сеанса работы, сохраняются в специально зарезервированной области памяти компьютера, называемой рабочим пространством (Workspace). Использование переменных рассмотрено в примере 1.
Пример 1. Использование переменных
Комментарии к вычислениям:
Если в конце строки ставится точка с запятой, то результат не будет выведен после нажатия Enter.
Здесь нет точки с запятой, и после нажатия Enter результат выводится и присваивается переменной c.
Для того чтобы узнать значение переменной достаточно ввести ее имя в командную строку и нажать Enter.
Использование MATHLAB как калькулятора иллюстрирует также пример 2.
Пример 2. Использование MATHLAB как калькулятора
Комментарии к вычислениям:
Нажатие клавиши Enter.
Результат присваивается переменной с именем ans
Результат выводится в формате с плавающей точкой. Такая запись означает 1.5031·103.
Длинные выражения можно записать в нескольких строках с использованием в качестве знака переноса символа многоточия ….
Использование массивов. В системе MATHLAB также используются массивы, математической формой представления которых являются матрицы. Напомним основные действия над матрицами и их реализацию в MATHLAB.
1. Присвоение значений матрице. Простейшей операций с матрицей является ее создание. Для создания столбца необходимо указать его имя, знак равенства и в квадратных скобках через запятую или через пробел перечислить значения элементов. Например: А=[1 2 3 4 5]. В случае если необходимо создать столбец чисел, то в качестве разделителя выступает символ точка с запятой, например: B=[1;3;5;7]. Для создания квадратной или прямоугольной матрицы необходимо чередовать оба этих способа, например:
С=[ 1 2 3 ; 4 5 6 ; 7 8 9 ].
2. Создание матриц специального вида. В математике встречаются матрицы специального вида, часто используемые при решении прикладных задач. Ниже приведен ряд из них:
Единичная матрица, рис. 5, а. В единичной матрице все элементы равны нулю, кроме элементов стоящих на главной диагонали и равных единице. Для создания единичной матрицы необходимо подать команду
<Имя матрицы>=eye(<Размер>).
Например: A=eye(4,4).
Единичная матрица может быть только квадратной.
Матрица со всеми единицами, рис. 5, б. Эта матрица содержит единицы во всех ячейках. Для создания матрицы необходимо указать
<Имя матрицы>=ones(<Кол-во строк>, <Кол-во столбцов>).
Например: A=ones(3, 4).
Нулевая матрица, рис. 5, в. Эта матрица содержит во всех своих ячейках одни нули. Для создания необходимо выполнить следующую команду:
<Имя матрицы>=zeros(<Кол-во строк>, <Кол-во столбцов>).
Например: A=zeros(4, 2).
Случайная матрица, рис. 5, г. Все значения этой матрицы получаются с генератора случайных чисел. Для создания такой матрицы необходимо задать следующую команду:
<Имя матрицы>=rand(<Кол-во строк>, <Кол-во столбцов>).
Например: A=rand(6, 3). По умолчанию в качестве элементов матрицы используются вещественные числа.
а б в г
Рис.5. Специальные матрицы
Доступ к ячейкам матрицы. Для доступа к ячейкам матрицы необходимо указать имя матрицы, номер строки и номер столбца. Нумерация строк и столбцов ведется с единицы. Номера пишутся в круглых скобках. Общий формат записи
<Имя массива>(<Номер строки>, <Номер столбца>).
Например: A(1,2).
Умножение матрицы на скаляр. В математике для всех матриц определена операция умножения матрицы на скаляр (число). Все значения матрицы в этом случае умножаются на это число:
Сложение, вычитание скаляра из матрицы. Кроме операции умножения матрицы на скаляр для матрицы и скаляра определены операции сложение и вычитания. Действия так же выполняются с каждой ячейкой матрицы отдельно:
Сложение (вычитание) матриц. Эта операция допустима только с матрицами одинакового размера. При выполнении операции действие выполняется с соответствующими друг другу ячейками:
Произведение матриц. При выполнении операции перемножения матриц выполняется последовательное умножение строки на вектор. При этом количество столбцов в первой матрице должно равняться количеству строк во второй матрице. Матрица результата будет иметь количество столько же строк, сколько и в первой матрице, и количество столбцов равное количеству столбцов во второй матрице:
Присвоение матрице математического выражения. Организация всех переменных системы MATHLAB как матрицы вызывает следующие ограничения применения их в выражениях.
Пример 3.
t=1:5
t= 1 2 3 4 5
y=cos(t)
y=1 0.5 –0.4 –1 –0.6 0.2
z=y/t
z=–0.08
Результат – получается единственное число, а ожидали функцию z(t)=cos(t)/t!
Для организации поэлементного выполнения арифметических операций предусмотрена специальная форма их записи: «.op». Для приведенного выше примера применение операций деления одного массива на другой в виде «./» дает следующий результат:
z=y ./ t
z= 0.5403 –0.2081 –0.3300 –0.1634 0.0567.
Использование массивов рассмотрено в примере 4.
Пример 4. Использование массивов.
Комментарии к вычислениям:
Элементы массива задаются в квадратных скобках.
Другой способ задать массив в виде x:y:z, где x – первый элемент массива, z – последний элемент массива, y – приращение каждого следующего элемента над предыдущим. Здесь элементами массива будут 2 2,5 3 3,5 4.
Сложение и вычитание массивов осуществляется поэлементно.
Операции поэлементного умножения и деления массивов обозначаются: .* и . /
Взятие функции от каждого элемента массива. В результате получится массив той же размерности.
Использование отдельных элементов массива. Номер элемента указывается после имени переменной массива в круглых скобках. Нумерация элементов начинается с единицы.
Сложение и умножение всех элементов массива на число.
Для генерации векторов пользователю предоставляется следующая команда:
<Имя вектора>=<Начальное значение>:<Шаг>:<Конечное значение>.
Например: Х=6:0.2:26.
Ответ: X=
6.0000 6.2000 6.4000 6.6000 6.8000 7.000
Программирование в ППП MATHLAB. Приемы разработки программ в MATHLAB в своей основной форме совпадают с аналогичными программами, разрабатываемыми в большинстве языков программирования.
Цикл for…end. Для данного n ,оператор
x =[];for i =1:n x=[x,i .2 ],end
или
x =[];for i =1:n x =[x,i .2 ],end
создает определенный вектор размерности n ,а оператор
x =[];for i =n:-1:1,x=[x,i .2 ],end
создает вектор с теми же элементами, но размещенными в обратном порядке.
Заметим, что матрица может быть пустой (например, в случае оператора x=[].)
Последовательность операторов
for i =1:m
for j =1:n
H(i,j)=1/(i+j-1);
end
end
H
создаст и напечатает на экране матрицу Гильберта размерности m×n . Точка с
запятой, которая завершает внутренний оператор, предотвращает вывод на экран ненужных промежуточных результатов, в то время как последний оператор H выводит на экран окончательный результат.
Цикл while…end. В общем виде цикл while записывается в виде
while <условие>
<операторы>
end
<Операторы> будут повторяться до тех пор, пока <условие> будет оставаться истинным. Например, для заданного числа a приведенная далее последовательность операторов вычислит и выведет на дисплей наименьшее неотрицательное число n ,такое что 2n < a:
n=0;
while 2 ^n <a
n=n +1;
end
n
Условный оператор if…end. В общем виде простой оператор if используется следующим образом:
if <условие>
<операторы>
end
<Операторы>будут выполняться только если <условие> истинно. Возможно также множественное ветвление, что демонстрируется приведенным далее примером.
if n <0
parity =0;
elseif rem(n,2)==0
parity =2;
else
parity =1;
end
При использовании двухвариантного условного оператора часть, связанная с elseif , конечно, не используется.
Оператор переключения case…end. При необходимости построить конструкцию ветвления с более чем двумя логическими условиями удобнее использовать не вложенные операторы if ,а оператор переключения switch ...case . Этот оператор имеет следующую структуру:
switch <выражение>
%<выражение>-это обязательно скаляр или строка
case <значение1>
операторы
%выполняется, если <выражение>=<значение1>
case <значение2>
операторы
%выполняется, если <выражение>=<значение2>
...
otherwise
операторы
%выполняется, если <выражение>не совпало
%ни с одним значением
end
Условия (операторы отношения). В MATLAB используются следующие операторы отношения:
Обозначение |
Значение |
< |
меньше чем |
> |
больше чем |
<= |
меньше или равно |
>= |
больше или равно |
== |
равно |
= |
не равно |
Отметим, что знак =используется в операторах присваивания, в то время как
знак ==используется в операторах отношения. Операторы отношения (или, другими словами, логические переменные, которые они создают) могут объединяться с помощью логических операторов:
Обозначение |
Значение |
& |
И |
| |
ИЛИ |
|
НЕ |
Когда эти операторы применяются к скалярам, то результатом является тоже
скаляр 1 или 0 в зависимости от того, является ли результат истиной или ложью. Попробуйте вычислить 3 <5, 3>5, 3==5 и 3==3. Когда операторы отношения применяются к матрицам одного размера, результатом является матрица того же размера, у которой в качестве элементов стоят 0 или 1, в зависимости от соотношения между соответствующими элементами исходных матриц. Попробуйте вычислить a=rand(5), b=triu(a), a ==b .Операторы while и if интерпретируют отношение между матрицами как истинное в том случае, если результирующая матрица не имеет нулевых элементов.
Так, если вы хотите выполнить оператор в том случае, когда матрицы A и B
полностью совпадают, вы можете написать
if A ==B <операторы>end
но если вы хотите выполнить оператор в том случае, когда матрицы A и B не равны, вы должны ввести
if any(any(A .=B))<оператор>end
или, что проще,
if A ==B else <оператор>end .
Заметим, что конструкция
if A .=B, <оператор>, end
почти наверняка не даст того, что нужно, поскольку оператор будет выполняться, только если каждый элемент матрицы A будет отличаться от соответствующего элемента матрицы B. Для сведения матричных отношений к вектору или скаляру можно воспользоваться функциями any и all .В предыдущем примере необходимо использование функции any два раза, поскольку эта функция – векторная.
Функция find. Оператор k=find(x) возвращает вектор k номеров ненулевых элементов вектора/матрицы x .Если x – матрица, то при определении индексов она рассматривается как вектор, образованный последовательно соединенными столбцами матрицы. Вектор find(x) можно использовать совместно с операторами отношения, поскольку результатом применения оператора отношения к матрицам является матрица из 0 и 1 (ложь или истина ). Таким образом, можно с помощью одного оператора find определить и записать сразу все индексы матрицы, удовлетворяющие некоторому условию. Если при этом вспомнить, что оператор цикла for допускает форму for k=KK ,где KK – целый вектор, то удобно использовать их вместе. Например, если вам необходимо выполнить <оператор>только для тех элементов матрицы, которые больше 3 ,то удобно это сделать следующим образом:
for i=find(A>3)
<оператор>
end;
При отладке выражений и программ в окне Редактора-отладчика сообщения об ошибках выдаются в командное окно MATLAB.
М-файлы бывают двух типов: сценарии и функции. Для их создания необходимо вызвать редактор m-файлов командой edit в командном окне либо последовательностью File→New→M-file из меню командного окна
M-файл-сценарий, именуемый также Script-файлом, является просто записью серии команд без входных и выходных параметров. Он имеет следующую структуру:
%Основной комментарий
%Дополнительный комментарий
Тело файла с любыми выражениями
Важны следующие свойства файлов-сценариев:
– они не имеют входных и выходных аргументов;
– работают с данными из рабочей области;
– в процессе выполнения не компилируются;
– представляют собой зафиксированную в виде файла последовательность операций, полностью аналогичную той, что используется в сессии при работе в командном окне.
Основным комментарием является первая строка текстовых комментариев, а дополнительным – последующие строки. Основной комментарий выводится при выполнении команд lookfor и help имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла.
Использование m-файла-сценария состоит в вызове его в заданное место файла для выполнения определяемых им действий.
М-файл-функция является типичным объектом языка программирования системы MATHLAB. Одновременно он является полноценным модулем с точки зрения структурного программирования, поскольку содержит входные и выходные параметры и использует аппарат локальных переменных. Структура такого модуля с одним выходным параметром выглядит следующим образом:
function vаг = f_name(Список_параметров)
%Основной комментарий
%Дополнительный комментарий
Тело файла с любыми выражениями
vаг=выражение
М-файл функции имеет следующие свойства:
– он начинается с объявления function, после которого указывается имя переменной var – выходного параметра, имя самой функции и список ее входных параметров;
– функция выдает значение и может использоваться в виде