Функция disp в matlab
Консольный ввод – вывод.
Дата добавления: 2015-06-12 ; просмотров: 2755 ; Нарушение авторских прав
Лабораторная работа №5
Ввод – вывод в системе Matlab.
Консольный ввод – вывод.
Для обеспечения взаимодействия с пользователем в процессе выполнения М-файлов в Matlab используются следующие команды (операторы).
disp – вывод значений указанной переменой или указанного текста в командное окно.
Особенность этой команды является то, что аргумент у нее может быть только один. Поэтому, без специальных приемов невозможно осуществить вывод нескольких переменных, и, в особенности, объединение текста с числовыми значениями, что часто является необходимым и удобным.
Чтобы вывести значения нескольких переменных, например, для печати таблиц, нужно создать единый объект, который содержал бы все эти значения. Это можно сделать, объединением соответствующих переменных в единый вектор, пользуясь операцией создания вектора-строки:
disp ( [x1, x2…xN]).
Аналогично можно объединить несколько текстовых переменных:
disp ([‘столбец 1’, ‘столбец 2’… ‘столбец N’])
Сложнее объединить в одну строку текст и значения переменных, это часто бывает необходимым. Трудности возникают потому, что нельзя объединять текстовые и числовые переменные. Задача решается с помощью функции num2str, которая осуществляет такое преобразование.
ОператорS=num2str(x) преобразует числовое значение переменной в текстовое представление.
Пусть х – числовая переменная. Тогда вывод ее значения с поясняющим текстом обеспечивается вызовом нижеследующим вызовом функции disp:
disp ([‘текст пояснения’, num2str (x)])
Например, если х=0,5, то в результате вызова
disp ([‘значение х: ’, num2str (x)])
значение х: 0,5.
Другой способ достижения этого же результата заключается в использование функции sprintf.
Обращение к ней имеет вид:
S=sprintf (‘текст 1 % frm текст 2’, х)
В результате создается текстовая строка S, состоящая из текста, указанного в тексте1, и значения переменной х в формате frm. Текст из фрагмента ‘текст 2’ размещается после значения переменной х. Эту функцию можно использовать в вызове disp:
>>disp (sprintf (‘текст 1 % frm’, х)).
В нижеследующей таблице приведены спецификаторы формата, используемые в функции sprintf:
Спецификатор | Описание |
%с | Один символ |
%d | Десятичное число со знаком |
%e | Представление с плавающей точкой, 3.14е+00 |
%E | Представление с плавающей точкой, 3.14Е+00 |
%f | Представление с фиксированной точкой |
%g | Более компактное, чем в %е или %f представление с подавлением незначащих нулей. |
%G | То же, что %g, но Е – на верхнем регистре |
%o | Восьмеричное представление (без знака) |
%s | Символьная строка |
%u | Десятичное без знака |
%x | Шестнадцатеричное представление, (буква a-f) |
%X | Шестнадцатеричное представление, (буква A-F) |
>>Y = sprint (‘Параметр_1 = % g’, X)
Y = параметр_1 = 1е-15
Удобным инструментом выбора некоторой из альтернатив является функция menu, которая создает окно меню пользователя. Функция имеет следующий формат:
К = menu(‘’, ‘Альтернатива_1’, ‘Альтернатива_2’… ‘Альтернатива_N’)
Пример: в результате вызова функции menuс параметрами, как это показано ниже,
К = menu (‘What?’, ‘Go’, ‘Exit’);
на экране появится следующие меню:
Выполнение программы приостанавливается, программа ожидает выбора одной из кнопок с альтернативами. После нажатия какой – либо кнопки выходному параметру присваивается значение номера выбранной альтернативы. Альтернативы нумеруются числами от 1 до N. В зависимости от значения K можно выбрать нужное продолжение программы.
Для ввода данных с клавиатуры удобно использовать функцию input, обращение к которой имеет следующий вид:
x = input (‘текст-подсказка’)
При обращении к этой функции программа приостанавливается, и ожидает ввода с клавиатуры. После ввода введенное значение присваивается переменной x и программа продолжит свою работу.
Пример script – файла, использующего рассмотренные выше вызовы:
x = input (‘Enter x:’);
В результате выполнения этого script – файла в командном окне будет следующее:
При выполнении данного файла в меню была два раза выбрана кнопка «Go», что привело к тому, функция sin была вычислена два раза, и два раза напечатан результат вычисления. В третий раз была выбрана кнопка «Exit», и script – файл завершил выполнение.
| | следующая лекция ==> | |
Создание файл – функций (процедур). | | | Файловый ввод – вывод. |
Полезен материал? Поделись: |
sqrt(x) | вычисление квадратного корня |
exp(x) | возведение в степень числа e |
pow2(x) | возведение в степень числа 2 |
log(x) | вычисление натурального логарифма |
log10(x) | вычисление десятичного логарифма |
log2(x) | вычисление логарифма по основанию 2 |
sin(x) | синус угла x, заданного в радианах |
cos(x) | косинус угла x, заданного в радианах |
tan(x) | тангенс угла x, заданного в радианах |
cot(x) | котангенс угла x, заданного в радианах |
asin(x) | арксинус |
acos(x) | арккосинус |
atan(x) | арктангенс |
pi | число пи |
round(x) | округление до ближайшего целого |
fix(x) | усечение дробной части числа |
floor(x) | округление до меньшего целого |
ceil(x) | округление до большего целого |
mod(x) | остаток от деления с учётом знака |
sign(x) | знак числа |
factor(x) | разложение числа на простые множители |
isprime(x) | истинно, если число простое |
rand | генерация псевдослучайного числа с равномерным законом распределения |
randn | генерация псевдослучайного числа с нормальным законом распределения |
abs(x) | вычисление модуля числа |
Почти все элементарные функции допускают вычисления и с комплексными аргументами. Например:
res = sin(2+3i)*atan(4i)/(1 — 6i); % res = -1.8009 — 1.9190i
Ниже показан пример задания вектора с именем a, и содержащий значения 1, 2, 3, 4:
a = [1 2 3 4]; % вектор-строка
Для доступа к тому или иному элементу вектора используется следующая конструкция языка:
disp( a(1) ); % отображение значения 1-го элемента вектора
disp( a(2) ); % отображение значения 2-го элемента вектора
disp( a(3) ); % отображение значения 3-го элемента вектора
disp( a(4) ); % отображение значения 4-го элемента вектора
т.е. нужно указать имя вектора и в круглых скобках написать номер индекса элемента, с которым предполагается работать. Например, для изменения значения 2-го элемента массива на 10 достаточно записать
a(2) = 10; % изменение значения 2-го элемента на 10
Часто возникает необходимость определения общего числа элементов в векторе, т.е. определения его размера. Это можно сделать, воспользовавшись функцией length() следующим образом:
N = length(a); % (N=4) число элементов массива а
Если требуется задать вектор-столбец, то это можно сделать так
a = [1; 2; 3; 4]; % вектор-столбец
b = [1 2 3 4]’; % вектор-столбец
при этом доступ к элементам векторов осуществляется также как и для векторов-строк.
Следует отметить, что векторы можно составлять не только из отдельных чисел или переменных, но и из векторов. Например, следующий фрагмент программы показывает, как можно создавать один вектор на основе другого:
a = [1 2 3 4]; % начальный вектор a = [1 2 3 4]
b = [a 5 6]; % второй вектор b = [1 2 3 4 5 6]
Здесь вектор b состоит из шести элементов и создан на основе вектора а. Используя этот прием, можно осуществлять увеличение размера векторов в процессе работы программы:
a = [a 5]; % увеличение вектора а на один элемент
Недостатком описанного способа задания (инициализации) векторов является сложность определения векторов больших размеров, состоящих, например, из 100 или 1000 элементов. Чтобы решить данную задачу, в MatLab существуют функции инициализации векторов нулями, единицами или случайными значениями:
a1 = zeros(1, 100); % вектор-строка, 100 элементов с
% нулевыми значениями
a2 = zeros(100, 1); % вектор-столбец, 100 элементов с
% нулевыми значениями
a3 = ones(1, 1000); % вектор-строка, 1000 элементов с
% единичными значениями
a4 = ones(1000, 1); % вектор-столбец, 1000 элементов с
% единичными значениями
a5 = rand(1000, 1); % вектор-столбец, 1000 элементов со
% случайными значениями
Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3:
E = [1 0 0; 0 1 0; 0 01]; % единичная матрица 3х3
E = [1 0 0
0 1 0
0 0 1]; % единичная матрица 3х3
Аналогичным образом можно задавать любые другие матрицы, а также использовать приведенные выше функции zeros(), ones() и rand(), например:
A1 = zeros(10,10); % нулевая матрица 10х10 элементов
A2 = zeros(10); % нулевая матрица 10х10 элементов
A3 = ones(5); % матрица 5х5, состоящая из единиц
A4 = rand(100); % матрица 100х100, из случайных чисел
Для доступа к элементам матрицы применяется такой же синтаксис как и для векторов, но с указанием строки и столбца где находится требуемый элемент:
A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3
disp( A(2,1) ); % вывод на экран элемента, стоящего во
% второй строке первого столбца, т.е. 4
disp( A(1,2) ); % вывод на экран элемента, стоящего в
% первой строке второго столбца, т.е. 2
Также возможны операции выделения указанной части матрицы, например:
B1 = A(:,1); % B1 = [1; 4; 7] – выделение первого столбца
B2 = A(2,:); % B2 = [1 2 3] – выделение первой строки
B3 = A(1:2,2:3); % B3 = [2 3; 5 6] – выделение первых двух
% строк и 2-го и 3-го столбцов матрицы А.
Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:
a = 5; % переменная а
A = [1 2 3]; % вектор-строка
B = [1 2 3; 4 5 6]; % матрица 2х3
size(a) % 1х1
size(A) % 1х3
size(B) % 2х3
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие изречения: Для студентов недели бывают четные, нечетные и зачетные. 9950 — | 7737 —
или читать все.
Операторы языка Matlab
К основным операторам языка Matlab, кроме рассмотренного ранее оператора присваивания, относятся:
оператор ввода input;
оператор отображения информации на экране disp;
оператор меню menu;
оператор вывода сообщения об ошибке error;
оператор задержки pause;
условный оператор if;
операторы циклов for и while;
оператор выбора switch;
оператор попытки try;
оператор прерывания работы цикла break;
оператор интерпретации строки eval;
оператор интерпретации имени функции feval;
Правила записи операторов
Операторы могут быть записаны в командной строке или в строках создаваемых пользователем m-файлов. В обоих случаях строка может содержать один или несколько операторов. В последнем случае операторы в одной строке отделяются друг от друга символами «,» или «;» («;» подавляет вывод результата на экран, а «,» этого не делает).
Один оператор может быть записан на нескольких строках (например, если он очень громоздкий). В этом случае в конце каждой строки (кроме последней) ставится многоточие «…»
1. Оператор консольного ввода input.
При выполнении этого оператора на экран выводится текстовое сообщение, соответствующее указанной строковой константе, и ожидается ввод пользователем значения переменной, имя которой указано слева от операции присваивания. Ввод набранного значения следует подтвердить нажатием клавиши [Enter], после чего значение переменной сохраняется в рабочем пространстве (в оперативной памяти).
» n=input(‘Введите размерность массива n=’);
Введите размерность массива n=5
2. Оператор временного перехода в интерактивный режим keyboard.
Как правило, записывается в программном (script-) файле и очень удобен на стадии отладки программы. Формат вызова:
После выполнения оператора выполнение m-файла приостанавливается, управление передается клавиатуре. После этого пользователь имеет возможность проверить или изменить значения некоторых переменных, используемых в m-файле, выполнение которого было прервано.
Возврат к выполнению m-файла производится путем вызова оператора возврата в формате
и управление передается оператору, следующему за оператором keyboard.
1. С помощью имени переменной
В этом случае в командной строке следует набрать имя переменной, после которого не записывать символ «;».
2. Оператор вывода disp.
Выводит значение переменной на экран без отображения ее имени.
1 2 3 4 5 6 7 8 9 10
При использовании составного массива в качестве аргумента часто необходимо использовать функцию преобразования int2str(числ_перем), которая округляет значение числовой переменной до ближайшего целого и преобразует последнее в строковую константу:
» disp([‘Размерность массива ‘ int2str(length(k))])
Размерность массива 10
Удобен при выводе в командное окно больших объемов информации. Вызов оператора возможен двумя способами:
pause – ожидает нажатия пользователем произвольной клавиши;
pause(n) – выполняет задержку на n секунд.
Может рассматриваться как разновидность оператора ввода.
переменная = menu (‘заголовок’,’поле1′,’поле2′,…)
Генерирует на экран графическое окно с кнопками, предоставляя пользователю возможность выбора одного из полей. Порядковый номер поля присваивается в качестве значения переменной, указанной слева от операции присваивания.
Оператор цикла for
for имя_перем-парам = выражение
Пример. Текст функции ones(n).
for i = 1:n, x(i)=0, end
Пример 2. Формирование матрицы.
Пример 3. Отрицательный шаг.
Переменная-параметр цикла может быть целочисленной, дробной, а также вектором, например,
for x = [1.25 16 –7 pi –3.45]
В этом случае переменная-параметр цикла будет поочередно принимать значения с первого по последнее.
Параметр цикла может быть также матрицей. В этом случае параметр цикла поочередно приравнивается каждому столбцу матрицы с первого по последний.
Оператор цикла while
Пример. Дано действительное число M>0. Найти минимальное целое n, такое, что n!>M.
detector