scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов
Скачать 5.73 Mb.
|
helphist3d , или ввести имя функции в окне Справочная си- стема. В Приложении 1.4, табл. 1.4.1-2 представлены описания всех графи- ческих функций, используемых в этом разделе. Более полную справочную ин- формацию о графических средствах и функциях Scilab можно получить на сайте scilab.org [ 13 ]. 127 Глобальное свойство графических объектов Свойство графических объектов – GlobalProperty (ГлобальноеСвой- ство) – это необязательный аргумент, который может использоваться в гра- фических функциях и позволяет осуществить глобальную настройку построе- ния всех новых линий и поверхностей. Он может быть указан в plot или surf виде следующих пар: 'ИмяСвойства1',ЗначениеСвойства1, …, 'ИмяСвойстваn',ЗначениеСвойстваn, где: ИмяСвойстваn должно быть строкой, не чувствительной к регистру и опре- деляющей то свойство, которое необходимо установить, а ЗначениеСвойстваn может быть вещественным, целочисленным или строкой (скаляром или матрицей) в зависимости от типа используемого свой- ства. Например, чтобы определить красную (цвет) штрихпунктирную линию с длинными штрихами (стиль линии) с маркерами в виде ромба (маркер), после- довательность должна быть следующей: 'Color','red', 'LineStyle','-.', 'Marker','diamond'. В Приложении 1.4.1, табл.1.4.1-3 приведен полный список ИмёнСвойств и их возможные значения – ЗначенияСвойства, которые можно установить при использовании plot или surf. Иногда можно использовать два ИмениСвойства, соответствующих одному свойству: первое из них используется по умолчанию в Matlab, а второе имя по умолчанию используется в Scilab (например, Color или Foreground для линии). На рис. 1.4.1-27 рассмотрен пример, в котором для построения двух гра- фиков функций в одном графическом окне учтены и прокомментированы все описанные выше свойства графических объектов. Обратите внимание, что пе- ред построением графика проведена очистка окна Обозревателя перемен- ных, Командного окна и Графических окон, а установка свойств графика (тип и ширина линии, тип точки (маркер) размер шрифта и др.) выполнена с ис- пользованием параметров функции plot , что является альтернативой средств графического редактора. 128 --> exec("РИС14127.sce", 0) 129 Рис.1.4.1-27. Построение и отображение графиков двух функций с использованием графических средств Scilab Примеры построения содержательных графиков Графические средства Scilab используются для изучения многих дисци- плин [14]. Приведем несколько примеров, иллюстрирующих построение гра- фиков с использованием описанных выше функций, при изучении дисци- плины «Теория электрических цепей» [15, 16, 17]. Построить два периода графика синусоидального напряжения 𝐮(𝐭) = 𝐔 𝐦 𝐬𝐢𝐧(𝛚𝐭 + 𝛗)B, с амплитудой Um=5В, угловой частотой ω=4рад/с и с начальной фазой φ=300 (рис.1.4.1-28). --> exec("РИС14128.sce", 0) 130 Рис.1.4.1-28. Построение графика синусоидального напряжения Построить график дискредитированного синусоидального напря- жения 𝐮 ( 𝐧𝐓 ) = 𝐬𝐢 𝐧 ( 𝐧𝐓 ) B. тактовый период примем равным T=0.1с, n=[0…63] (рис.1.4.1-29) --> exec("РИС14129.sce", 0) Рис.1.4.1-29. Построить график дискредитированного синусоидального напряжения 131 Построить в полярной системе координат график функции 𝑟 = sin(𝑡)√|cos(𝑡)⌉ sin(𝑡)+ 7 5 -2sin(t)+2 (рис.1.4.1-30) --> exec("РИС14128.sce", 0) Рис. 1.4.1-30 Построение графика функции в полярной системе координат Построить график функции корреляции случайного процесса (рис.1.4.1-31). 132 --> exec("РИС14131.sce", 0) Рис. 1.4.1-31 Построение графика функции корреляции случайного процесса 133 --> exec("РИС14132.sce", 0) Рис. 1.4.1-32 Построение графика функции амплитудного спектра частот прямоугольного импульса Построить график сигнала амплитудной модуляции с одним тоном (рис.1.4.1-33). 134 --> exec("РИС14133.sce", 0) Рис. 1.4.1-33 Построение графика функции плотности вероятности случайного процесса 135 Построение простых геометрических форм Кроме функций, представленных как аналитически, так и таблично ино- гда необходимо нарисовать в графическом окне простейшие геометрические фигуры. Это легко можно реализовать функцией plot. В качестве содержательного примера рассмотрим следующую задачу: Построить в графическом окне графическую фигуру ромб, изображен- ную на рис. 1.4.1-34. Затем задать координаты нескольких точек, а затем отме- тить их попадания в заданную область красной звездочкой и непопадания их в заданную область черной точкой. Рис. 1.4.1-34. Ромб в системе координат x-y Проведем формализацию поставленной задачи: Для этого запишем уравнение прямых – AB, BC, CD, DA: AB: x-y=-1; BC: x+y=1; CD: x-y=1; DA: x+y=-1. Для того, чтобы точка M с координатами (x,y) принадлежала замкнутой за- штрихованной области, необходимо выполнить следующие условия: x-y -1 x-y 1 x y 1 x y -1 |x-y| 1 |x y| 1 . На Рис. 1.4.1-35 приведено решение поставленной задачи с помощью функции Fromb и ее решение. 0 y x B 1 C 1 -1 D -1 A 136 exec("РИС14135.sce", 0) Рис. 1.4.1-35. Пример построение фигуры ромб В Scilab имеются высокоуровневые средства для построения простей- ших геометрических фигур: arg_ properties — описание свойств объекта дуги; rectangle properties — описание прямоугольника свойство сущности; segs_properties — описание свойств объекта сегментов; xarc —рисование части эллипса; xarcs — рисование части набора эллипсов; xarrows — рисование набор стрелок; xfarc — заливка части эллипса; xfarcs — заливка частей набора эллипсов; 137 xfrect — заливка прямоугольника; xrect — рисование прямоугольник; xrects — рисование или заливки набора прямоугольников; xsegs — рисование несвязанных сегментов. 1.4.2. Низкоуровневая графические средства и основные графические объектов Иерархия графических объектов В Scilab графические окна и их содержимое представлены иерархиче- скими объектами. Верхний уровень иерархии – это figure (Графическое окно). Каждое графическое окно ( figure) определяет по меньшей мере одного потомка – объект axes (Оси). В свою очередь каждый объект axes содержит набор наследуемых объектов двух типов. Первый тип представляет объекты, которые являются основными графическими объектами для отображения 2D и 3D графиков и различных геометрических фигур, например, polylines (Ломан- ные линии), rectangles (Прямоугольники), arcs (Дуги), segs (Сегменты), compound (Склеивание, Соединение) и другие [13]. Второй тип представляет объекты для построения графического интерфейса пользователя (GUI), к кото- рым в первую очередь относится объект uicontrol , позволяющий создавать графические интерактивные компоненты такие как ползунки, числовые поля, изменяемые кнопкой мыши, редактируемые таблицы, редактируемые тексто- вые поля в графических элементах, флажки, группы кнопок, выпадающие списки, выпадающие меню кнопки и др. Все эти объекты являются прямыми потомками объекта figure , в которой они определены. Их свойства могут быть установлены и настроены через их указатели, как и для других графических объектов. Главное в низкоуровневом графическом режиме заключается в том, чтобы сделать обмен свойствами графических объектов проще и эффек- тивно. Этот графический режим имеет набор графических функций низкого уровня, используемых для управления свойствами объектов, такими, как дан- ные, координаты и масштабирование, цвет и вид без необходимости повторять команды инициализации графики. Все графические объекты, в том числе и figure, связаны между собой пе- ременными Scilab, имеющими тип handle (Дескриптор). Дескриптор – это уникальный идентификатор (указатель), который связан с каждым экзем- пляром созданного графического объекта. Используя этот дескриптор, можно добраться до свойств конкретного объекта используя функ- ции set и get 138 Как известно все графики в Scilab строятся в так называемых графиче- ских окнах – Figure , каждое из которых имеет идентификационный номер, ко- торый является дескриптором графического окна ( handle ). Рисование – это сложный процесс, который заключается в создании раз- личных объектов в терминах объектно-ориентированного программирования. Например, сначала создается графическое окно – объект Figure , которое затем порождает потомков – объекты Children в виде объектов Axes (оси, которые отображаются на экране). У осей тоже есть потомки – линии графика функций, которые к ним привязываются. Таким образом, каждое графическое окно в Scilab – это отдельный гра- фический объект, обладающие большим набором свойств (Figure properties), которые отвечают за его внешний вид, а также содержащий множество подчи- ненных объектов, наследующие его свойства. При построении графиков про- исходит неявное обращение к рабочей области графического окна, когда, например, отображаются оси, наносится сетка, помечаются точки или эти точки соединяются отрезками прямых линий и т.д. Для построения графиков в системе есть множество предопределенных высокоуровневых функций, ко- торые выполняют всю работу в графическом окне (п. 1.4.1). На втором уровне иерархии находятся графические объекты Axes (Оси), которые обладают свойствами ( Axes properties ), позволяющими изменять ко- ординаты и тип осей, а также значения параметров по умолчанию для созда- ния объектов следующего уровня. У каждого объекта Axes два потомка: объекты Compound (Составной объект) и Legend (Пояснения-Легенда). Объект Legend представляет собой список графических объектов треть- его уровня иерархии. Эти объекты обладают свойства ( Legendentityproperties ), которые указывают на тип линии, символы маркеров и их цвета. Объект Compound (Составной объект) определяет взаимозависимости раз- личных графических объектов и их глобальное свойство – отображение (види- мость), в том числе объектов следующего уровня Polyline (Полилинии) – это ломанные линии отображающие графики, окружности, квадраты и др., кото- рые устанавливают 2D и 3D свойства ( Polyline properties ) рисования графиков, фигур и поверхностей. Например, одно из свойств Polyline properties – Visible , устанавливаю- щее видимость графика, принимает значение on или off. А, например, другое свойство – Thickness , указывающее ширину линии в пикселях, принимает зна- чение положительного числа. Редактор объектов Свойства всех объектов можно установить, как программно с помощью соответствующих функций, так и с помощью GraphicEditor (Графического Ре- дактора). Сам GraphicEditor также может быть вызван и программно и из гра- фического окна. На рис 1.4.2-1 показаны две панели окна GraphicEditor В 139 одной панели – ObjectsBrowse (Браузер объектов) отображается иерархия объ- ектов выбранной Figure(1) , в другой – Object Properties ( Свойства Объектов ) – значения соответствующих свойств. Рис. 1.4.2-1 Окно графического редактора В панели Objects Browse отображаются те объекты, значения свойств ко- торых можно редактировать: Figure, Axes, Compound и другие. Например, выбрав объект Figure , можно поменять название графика, его размещение на экране ( X position=0 , Y position=0 – левый верхний угол); раз- меры графика, сжав его по любой из осей; задать цвет заднего плана, поменять цветовую гамму. Выбрав, например, редактирование осей Аxes , можно редактировать каждую из осей X, Y, Z : задать название оси; цвет (при этом цвет меняется у названия оси, сетки и разметки оси); задать размещение названия для оси X (наверху, внизу или посередине) и для оси Y (слева, справа или посередине). Кроме того, можно задать цвет метки, угол поворота, ее размер, фон, расстоя- ние между линиями сетки, установить насечку между линиями и другое. При последовательном выборе Figure, Axes и Compound , активизируются соответствующий объект Polyline , в котором можно менять вид и размеры маркеров, а также аппроксимировать наш график различными кривыми. Графические объекты и их свойства Для создания графического окна можно использовать функцию figure: h=figure(id); h=figure("Свойство1","Значение1",..., "Свойствоn" ,"Значениеn"), 140 где: id – необязательный целочисленный параметр, задающий номер окна; h – переменная типа handle , которая связана с набором свойств этого окна и их значениями; Свойств о n – название n-го свойства; Значениеn – значение n -го свойства и т.д. Объекты всех уровней имеют определенные свойства. Так, например, свойство BackgroundColor – определяет цвет фона figure и может принимать соответствующие Значение в виде вектора 1×3 , элементы которого определяют цвет: красный, зеленый и синий, т. е. [R,G,B] ; Figure_name – строка, позволяю- щая задать заголовок окна; Position – определяет расположение figure на экране и может принимать соответствующее Значение в виде вектора 1×4 , эле- менты которого определяют геометрический аспект фигуры [ X Y ширина высота ], где координаты x и y определяют расположение верхнего левого угла; Например, оператор f=figure('Figure_name','МТУСИ', 'position',[10 100 300 200]); создает графическое окно с именем МТУСИ, показанное на рис.1.4.2-2. Рис. 1.4.2-2 Графическое окно с именем МТУСИ Причем Указатель (Дескриптор) графического окна записывается в пе- ременную f тип handle . Размер и положение окна на экране компьютера можно задать с помощью параметра: 'position', [x y dx dy], где: x, y – положение верхнего левого угла окна (по горизонтали и вер- тикали соответственно относительно верхнего левого угла экрана); dx – размер окна по горизонтали ширина окна в пикселях; 141 dy – размер окна по вертикали высота окна в пикселях. Параметры объектов можно задавать одним из двух способов: непосред- ственно при создании графического окна (рис. 1.4.2-2) или после создания гра- фического окна с помощью функции set , которая имеет следующие форматы: set('Свойство', 'Значение'); set(h,'Свойство'); set(h,'Свойство','Значение'); (handlePath, 'Свойство1','Значение1',…,'Свойствоn','Значениеn'); h.Свойство='Значение'; где : handlePath – с имвольная строка, содержащая путь, указывающий на графический объект. Этот путь состоит из свойства графической объектов всех его родителей Функция set используется для изменения значения указанного свойства графичесих объектов или объектов GUI. В этом случае точечная нотация при обращении к свойству эквивалентна использования функции set. Например , set(h,"background",3) эквивалентно h.background=3. Имена свойств – это символьные строки, а тип набора значений этих свойств зависит от типа соответствующего свойства. Просмотреть списка всех существующих свойств можно в документа- ции Scilab на страницах graphics_entities для графических объектов и uicontrol для объектов пользовательского интерфейса. Формат функции set может быть следующими: set('current_entity',h), который устанавливает новый объект с дескриптором h как текущий; set ( 'current_figure',fig ), который устанавливает новый графический рисунок как текущий (этот фор- мат эквивалентен функции scf ); set (' current_axes',axes ), который задает новый объект оси как текущий (этот формат эквивален- тен функции |