Ввод числовых и символьных данных.

Для организации диалога пользователя с программой в системе MATLAB имеются специальные команды. В частности, простейший способ ввода числовой и символьной информации (в командном окне выводится запрос пользователю, на который предоставляется возможность получить ответ), набираемой на клавиатуре обеспечивает функция input, допускающая следующий формат обращения:

x=input('Приглашение')

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

Второй вариант обращения к функции input имеет вид:

x=input('Приглашение','s')

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

Вывод результатов вычислений.

Для вывода значения выражения (частным случаем которого является имя любой переменной) достаточно лишь не набрать после него символ «точка с запятой» (;), подавляющий выдачу результата (т.е. имеет место автоматический вывод). В качестве альтернативы можно использовать функцию disp, которая отличается от автоматического вывода тем, что не выводит имя отображаемого значения (т.е. имя переменной, которой присваивается результат вычислений, или имя системной переменной ans):

disp(Выражение)

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

Для вывода в командное окно предупреждающих сообщений вместо функции disp рекомендуется применять функцию warning, имеющую следующий формат вызова:

warning('Предупреждающее_сообщение')

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

warning off

а после вновь восстановить командой

warning on

Предупреждающие сообщения, выдаваемые с использованием функции warning в командном окне, будут предваряться словом “Warning”.

Для вывода в командное окно сообщений об ошибках используют функцию error:

error('Сообщение_об_ошибке')

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

>> warning('Предупреждение')

Warning: Предупреждение

>> error('Ошибка')

Ошибка

Анимационные эффекты

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

В качестве первого соответствующего примера рассмотрим задачу о визуализации равномерного движения по окружности материального тела в виде бусинки. Имеем:

% Предварительное построение окружности

x=-2:0.01:2;

y1=sqrt(4-x.*x);

y2=-y1;

plot(x,y1,'k',x,y2,'k');

axis square;

hold on

% Размещаем бусинку в начальном положении

x=2; y=0;

h=plot(x,y,'.r');

% Задание режима отрисовки и стрирания объекта

set(h,'EraseMode','xor','MarkerSize',36);

% Динамически изменяем координаты точки, относящейся

% к графическому объекту line с описателем h,

% выполняем циклическое продвижение бусинки и ее перерисовку

t=0;

dt=0.1;

alpha=2*pi/200;

for k=1:1000

t=t+dt;

x=2*cos(alpha*t);

y=2*sin(alpha*t);

set(h,'XData',x,'YData',y) % перемещаем точку

% в новое положение

SMovie(k)=getframe; % сохраняем созданный

% файл видеоклипа

end;

movie(SMovie,1) % воспроизведение

% созданного видеоклипа

Результаты выполнения условно первой части представленной программы, связанной с предварительным построением окружности, приведены на рис. 2.36.1. Результат последующего размещения бусинки в начальном положении иллюстрирует рис. 2.36.2. Для воспроизведения созданного видеоклипа используется команда movie, причем при необходимости прокрутить снятый ролик несколько раз подряд, в качестве второго аргумента функции movie следует указать целое число большее единицы. При отсутствии дальнейшей необходимости в хранении видеоклипа рекомендуется освободить память в рабочем пространстве системы MATLAB, занятую под переменную Buf, т.е. задать команду

clear buf

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

Наши рекомендации