
- •Лабораторная работа №1. Введение в MATLAB
- •Краткая характеристика MATLAB
- •Описание интерфейса MATLAB
- •Работа с MATLAB в режиме командной строки
- •Объявление переменных
- •Удаление созданных переменных
- •Создание матриц и векторов
- •Поэлементные операции над матрицами
- •Основы построения графиков
- •Задания на лабораторную работу
- •Примечание к заданию
- •Варианты задания
- •Лабораторная работа №2. Программы в MATLAB
- •Скрипты
- •Рабочая область в MATLAB
- •Комментарии
- •Функции
- •Фактические и формальные параметры функции
- •Рабочая область функции
- •Скрипты и функции
- •Передача параметров по значению
- •Анонимные функции
- •Документирование функций
- •Отладка
- •Задание на лабораторную работу
- •Варианты заданий
- •Лабораторная работа №3. Условные выражения и циклы
- •Управление потоками в MATLAB
- •Оператор ветвления if/elseif/else
- •Оператор цикла for
- •Оператор цикла while
- •Проверка корректности входных переменных
- •Задания на лабораторную работу
- •Варианты задания
- •Лабораторная работа №4. Вектора и матрицы
- •Создание векторов и матриц в MATLAB.
- •Обращение к элементам матриц.
- •Заполнение матриц
- •Операции деления, умножения и возведения в степень.
- •Создание матриц специального вида
- •Объединение матриц
- •Удаление строк и столбцов
- •Задания на лабораторную работу
- •Лабораторная работа №5. Ввод-вывод
- •Организация ввод-вывод в MATLAB
- •Строки
- •Функция disp
- •Функция input
- •Функция fprintf
- •Организация диалога с пользователем и вывод таблицы с использованием форматированного вывод
- •Задания на лабораторную работу
- •Варианты задания
- •Лабораторная работа №6. Графические возможности в MATLAB
- •Основы графики в MATALB
- •Оформление графиков
- •Вывод нескольких графиков в текущее окно
- •Функция eval
- •Задания на лабораторную работу
- •Варианты задания

Лабораторная работа №5. Ввод-вывод
Организация ввод-вывод в MATLAB
Для облегчения работы с программой, особенно неподготовленным пользователям, программа должна иметь пользовательский интерфейс. В простейшем случае программа может иметь текстовый интерфейс пользователя. В данной лабораторной работе будут рассмотрены возможности по созданию текстовых интерфейсов пользователя в MATLAB для организации диалога с пользователем и форматированного вывода.
Основу консольного ввода-вывод в MATLAB составляют 3 функции:
•disp — вывод содержимого указанной переменной;
•input — функция ввод;
•fprintf — форматированный вывод.
Далее рассмотрим каждую функцию отдельно, однако сначала кратко рассмотрим сроки в MATLAB.
Строки
Прежде чем рассказывать о вводе-выводе в MATLAB сделаем небольшое отступление и расскажем о строках в MATLAB. Первое, что необходимо отметить, это то, что все строки в MATLAB является векторами-строками содержащие символы (тип char), а это значит со строками в MATLAB можно работать так же как и массивами.
Строки в MATLAB заключаются в одинарные кавычки. Приведем пример создания строки:
>> str = 'Hellow world!'
str =
Hellow world!
Внутри одиночных кавычек можно помещать вводить доступные символ, например буквы, цифры, символы подчеркивания, двойные кавычки и др. Однако, так как строка сама ограничивается одинарными кавычками, то для того чтобы поместить в строку одинарную кавычку, необходимо поместить в нее две следующие подряд одинаковые кавычки. Для того чтобы это было понятнее, сразу приведем пример:
49

>> str = 'You''re right!'
str =
You're right!
После данного краткого обзора строк в MATLAB теперь непосредственно перейдем к рассмотрению функций консольного ввода-вывода в MATLAB.
Функция disp
Данная функция является простейшей для вывод в командное окно в MATLAB. Данная функция принимает единственный аргумент, который выводит в командное окно. Например:
>>disp(str); Hellow world!
>>str
str =
Hellow world!
>>disp(x)
12.5000
>>x
x =
12.5000
Как видно вывод функции disp аналогичен тому, если ее аргумент просто ввести в
консоль без символа «;» на конце, за исключением того, что не будет выведено имя переменной. На этом рассмотрение данной функции закончим и перейдем к рассмотрению функции input.
Функция input
Для ввода из командного окна в MATLAB предусмотрена функция input, которая может принимать только один аргумент — подсказка пользователю, и возвращающая результат вычисления выражения, введенных пользователем. Приведем пример использования данной функции:
50

>>a = input('Введите число a: '); Введите число a: 12.5
>>b = input('Введите число b: '); Введите число b: 2 + 5
>>a
a =
12.5000
>> b
b =
7
Как видно из примера, прежде чем вернуть результат, MATLAB попытается вычислить его значение, как если бы его введи в командное окно, однако это поведения не всегда желательно, и требуется получить введенное выражение в виде строки. Для этого функции input необходимо указать второй параметр 's':
>>str1 = input('Введите строку: ','s'); Введите строку: Hellow world!
>>str1
str1 =
Hellow world!
>> str2 = input('Введите строку: '); Введите строку: Hellow world! Error: Unexpected MATLAB expression.
Введите строку: 'Hellow world!' >> str2
str2 =
Hellow world!
Как видно из этого примера, без указания второго параметра в input ввести строку не заключая ее в одиночные кавычки не удастся.
Теперь приведем пример организации простого диалога с пользователем. В качестве примера приведем программу, которая будет раскладывать введенное целое число на множители. Данная программа будет иметь главного меню, содержащее два пункта:
1. Разложить число на множители
51

2.Выход
Код данной программы содержится в функции simpleDialog.m:
function [ ] = simpleDialog( )
%Пример организации простейшего диалога с пользователем
%переменная для содержащая выбор пользователя userAnswer = 0;
%цикл для организации главного меню
while (userAnswer ~= 2)
%вывод содержимого меню disp('Главное меню');
disp('1. Разложить число на множители'); disp('2. Выход');
%получим от пользователя номер пункта, меню которое он выбрал userAnswer = input('> ');
%хорошим томом будет проверить корректность данных введенных
%пользователем, и если они ошибочны, то вывести предупреждение
if userAnswer ~= 1 && userAnswer ~= 2 disp('Ошибка ввода, повторите ввод');
elseif userAnswer == 1
%предложим пользователю ввести целое положительное число x = input('Введите целое положительно число: ');
%проверим корректность введенного числа
%функция isscalar проверят, что введенное число скаляр if ~isscalar(x) || x < 0 || x ~= round(x)
disp('Ошибка, введены некорректные данные');
%в случае ошибки ввода можно либо попросить повторить
ввод
% или вернутся в главное меню. В данном случае мы
вернемся к
% главному меню
else
%вычисли разложение числа x на множители
%для этого воспользуемся функцией factor disp('Разложение введенного числа на множители'); disp(factor(x));
end
end
end
end
52