scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов
Скачать 5.73 Mb.
|
cell ( VcellArray =cell(2,2)) . Дан- ную инициализацию целесообразно выполнять, когда нужно определить боль- шой вектор или матрицу ячеек и в цикле задавать их значения. В этом случае Scilab сразу создает массивы нужных размеров, в результате чего повышается скорость выполнения программ. На рис. 1.3.6-2 показано, как извлечь несколько элементов из массива ячеек – список, разделенный запятыми, учитывая, что массив ячеек 4×6 --> // Извлечение несколько элементов из массива ячеек --> C = cell (4, 6); --> for k = 1:24 > C{k} = k * 2; > end --> C = [2] [10] [18] [26] [34] [42] [4] [12] [20] [28] [36] [44] [6] [14] [22] [30] [38] [46] [8] [16] [24] [32] [40] [48] --> --> С{:, 5} ans = 34 ans = 36 ans = 38 ans = 40 --> // Это то же самое, что вводить С{1,5}, C{2,5}, С{3,5}, C{4,5} Рис. 1.3.6-2 Извлечение несколько элементов из массива ячеек 102 Рассмотрим еще один пример (р ис. 1.3.6-3), в котором показано, как считывать и записывать данные массива ячеек. Для этого создадим массив ячеек 2×3 текстовых и числовых данных. --> // С читывание и запись данных в массив ячеек и из массива ячеек --> --> C = {'one', 'two', 'three'; 1, 2, 3} C = [1x1 string ] [1x1 string ] [1x1 string ] [1x1 constant] [1x1 constant] [1x1 constant] --> --> upLeft = C(1:2, 1:2) upLeft = [1x1 string ] [1x1 string ] [1x1 constant] [1x1 constant] --> --> // Замена значений элементам первой строки --> C(1,1:3) = {'first','second','third'} C = [1x1 string ] [1x1 string ] [1x1 string ] [1x1 constant] [1x1 constant] [1x1 constant] --> nicC = C(2,1:3) nicC = [1x1 constant] [1x1 constant] [1x1 constant] --> --> // Преобразование массива ячеек в вектор --> nicV = cell2mat(nicC) 1. 2. 3. Рис. 1.3.6-3 Считывание и запись данных в массив ячеек и из массива ячеек Существует два способа ссылки на элементы массива ячеек. Можно за- ключить индексы в круглые скобки () и обращаться к массиву ячеек, напри- мер, для того, чтобы определить подмножество массива. Также можно заклю- чить индексы в фигурные скобки {} , и сослаться на элементы данных (текст, числа или другие данные) в отдельных ячейках. Индексы массива ячеек в круглых скобках относятся к наборам ячеек. Например, круглые скобки используются, чтобы создать массив ячейки 2×2 , который является подмножеством C Обновление набора ячеек выполняется их заменой с тем же числом ячеек. Например, чтобы заменить ячейки в первой строке C используется экви- валент массив ячеек размера ( 1×3 ). Чтобы заменить содержимое ячейки, ана- логично можно индексировать и с использованием фигурных скобок (рис. 1.3.6-4). --> // Индексирование с использованием фигурных скобок 103 --> --> last = C{2, 3} last = 3. --> C{2, 3} = 300 ; --> C{2, 3} ans = 300. --> las = C{1:2, 1:2} las = las(1) first las(2) 1. las(3) second las(4) 2. --> las(1) ans = first Рис. 1.3.6-4 Индексирование с использованием фигурных скобок Если элементы в массиве содержат числовые данные, можно преобразо- вать ячейки в числовом массиве, используя функцию cell2mat Доступ к содержимому ячеек (число, текст или другие данные в ячейках) производится путем индексации с использованием фигурных скобок. Напри- мер, для доступа к содержимому последней ячейки C , используйте фигурные скобки. Можно получить доступ к содержимому нескольких ячеек путем индек- сации с фигурными скобками. 1.3.7. Контрольные вопросы 1) Какие способы создания векторов и матриц реализованы в Scilab? 2) Каким образом создается вектор с постоянным шагом? 3) Можно ли создать матрицу, элементы строки которой изменяются с постоянным шагом? 4) С какого номера начинается индексация вектора? 5) Какая функция позволяет определить длину вектора? 6) Какие функции предназначены для определения числа строк, числа столбцов матрицы и общего количества ее элементов? 7) Что такое «пустая матрица» и как ее создать? 8) Какую матрицу создает операция ones ? 104 9) Каким образом в Scilab могут быть объединены две матрицы? 10) С использованием каких функций матрицы могут динамически из- менять свой размер в процессе выполнения программы? 11) Для чего предназначены в Scilab функции matrix и resize_matrix ? 12) Назначение и формат функции cat ? 13) Каким образом удалить из матрицы определенный столбец? 14) Что такое векторизация? 15) Что такое стандартное индексирование векторов и матриц? 16) Что такое векторное индексирование матриц? 17) Что такое логическое индексирование матриц? 18) Что такое поэлементные действия (операции с точкой) и где они используются? 19) Каким образом можно транспонировать вектор или матрицу? 20) Требуется ли при работе с векторами и матрицами предваритель- ное объявление их размера? 21) Какой символ используются для разделения элементов матрицы в строке, а какой для разделения ее столбцов? 22) Какие команды предназначены для заполнения матрицы случай- ными числами, распределенными по равномерному или нормаль- ному закону распределения? 23) Какой командой можно осуществить выбор минимального и мак- симального значения элемента матрицы. 24) В каких случаях матрицы могут динамически изменять свой раз- мер? 25) Как создается массив ячеек? 26) Что представляют собой операции доступа извлечения и модифи- кации матриц? 27) Что такое индексирование и векторизация? 28) Что такое логическая индексация? 29) Когда можно использовать функцию find ? 105 1.4. Средства визуализация в системе Scilab Пользователь Scilab имеет целый ряд возможностей для визуализации данных: высокоуровневые графические функции ( plot, surf, mesh и многие другие); интерактивную среду, компоненты которой позволяет изменять свой- ства элементов графика; специализированные функции и средства для графического отобра- жения характеристик исследуемых объектов и результатов вычисле- ний; низкоуровневые средства построения графиков и простейших гео- метрических фигур; низкоуровневые средства построения графических интеофейсов пользователей. Высокоуровневая графика позволяет пользователю получать резуль- таты в графическом виде, прикладывая минимум усилий. Основную работу, связанную с построением графика, масштабированием осей, подбором цве- тов и т.д. берет на себя среда Scilab. В некоторых случаях этих средств оказывается недостаточно. Напри- мер, если создаваемое приложение должно осуществить вывод графических результатов в готовом виде, не предполагающем их дальнейшую правку, или в ходе своей работы управлять элементами графиков: удалять поверхности, изменять цвет и толщину линий, добавлять стрелки и поясняющие надписи и т.д. В этих случаях использование дескрипторной (низкоуровневой) гра- фики дает возможность полного контроля над элементами высокоуровневой графики. Кроме того, дескрипторная графика будет полезна при создании соб- ственных приложений. Ее понимание обязательно для эффективного напи- сания приложений с графическим интерфейсом пользователя. Кроме того, большинство высокоуровневых графических функций допускают обраще- ние к ним с использованием низкоуровневых свойств того графического объекта, который они создают. В последующих параграфах рассматриваются высокоуровневые и низ- коуровневые графические средства, а также средства для создания графиче- ских интерфейсов пользователей (GUI). 106 1.4.1. Высокоуровневые графические средства. Средства отображение графиков функций и простейших геометрических фигур Основные понятия высокоуровневой графики Графическое изображение в высокоуровневые графики – это чаще всего графическое представление графика функций или графическое изобра- жение простейших геометрических фигур. В среде Scilab все графики строятся по точкам, при этом каждые две со- седние точки соединяются друг с другом отрезком. Чем меньше расстояние между точками, тем меньше искажение графика за счет замены его реального образа кусочно-линейной функцией. Поэтому главным ограничивающим фак- тором в желании получить как можно более гладкое представление графиче- ского изображения, является то, что координаты точек нужно хранить в опе- ративной памяти. Внешний вид графика определяют следующие факторы: Вид математической функции в системе координат: o одной переменной – графики функции с одной переменной в задан- ной системе координат: в прямоугольной системе координат; в полярной системе координат; в комплексной плоскости (например, годографы); в векторной плоскости; o двух переменных – графики функции с двумя переменными в за- данной системе координат: в пространственной прямоугольной системе координат; в сферической системе координат; в цилиндрической системе координат; в векторном пространстве. Способ представления в виде: o точечного графика; o линейного графика (с учетом всевозможных представлений ли- нии); o полигонального графика; o градиентного графика; o контурного графика; o гистограммы. 107 Графические окна Графические изображения (объекты) в Scilab отображаются в специаль- ных Графических окнах, причем в одном графическом окне (в одной системе координат) могут быть построены несколько графических объектов, а на экране дисплея могут быть размещены одновременно несколько графических окон, причем разных типов. Графические окна имеют свою нумерацию. Чтобы создать новое графи- ческое окно с конкретным номером достаточно выполнить функцию scf: h = scf(id) ; h = scf() , где: id – необязательный целочисленный параметр, задающий номер окна, а h – дескриптор создаваемого окна, который связан с набором свойств этого окна и их значениями. Если параметр, указывающий номер создаваемого окна, отсутствует, то система присваивает окну последний незанятый порядковый номер, начиная с нуля. В ответ функция scf возвращает дескриптор окна, а также набор его свойств, причем большая часть значений свойств заранее предопределена (т.е. заданы по умолчанию), кроме того п ервое обращение к одной из графических команд автоматически вызывает появление графического окна, которому при- сваивается номер ноль ( id =0 ) рис.1.4.1-1). Рис. 1.4.1-1 Графическое окно с номером 0 Элементы меню, расположенного в верхней части графического окна, предоставляют большой набор команд, предназначенных для отображения и оформления графиков, позволяющих в интерактивном режиме и без использо- вания программного кода придать графику желаемый вид, а кнопки панели дублируют наиболее часто используемые пункты меню, ускоряя тем самым процесс оформления графика. Каждый элемент меню содержит набор команд, соответствующих его названию: 108 Файл: Новое графическое окно, Загрузить…, Сохранить…, Экспортировать, Ко- пировать в буфер, Параметры страницы, Печать, Закрыть ; Инструменты: Показать/скрыть панель инструментов, Увеличить область, Исходный вид, 2D/3D вращение; Правка: Установить текущим графическим окном, Очистить графи- ческое окно…, Свойства графического окна…, Свойства осей, Разрешить вы- бор объектов, Включить/выключить управление подсказками данных, Начать/остановить изменение данных кривых; Справка: Содержание, О Scilab. Наиболее часто используемые команды вынесены на панель инструмен- тов в виде кнопок. Переход между Командным окном и Графическим окном осуществля- ется с помощью комбинации клавиш или с помощью мыши. Закрыть графическое окно можно традиционным способом – щелчком по крестику, расположенному в правом верхнем углу окна, или выполнением команды xdel(id) , в скобках которой указывается id – номер закрываемого графического окна. Перечень всех открытых графических окон можно посмотреть, выпол- нив команду winsid , которая выводит в следующей строке номера открытых графических окон (рис.1.4.1-2). --> // Примеры использования команд scf, xdel и winsid --> scf(2); scf(3); scf(5);//Открытие графических окон 2,3,5 --> winsid//Вывод списка открытых графических окон ans = 2. 3. 5. --> --> xdel(3);//Удаление графического окна с номером 3 --> winsid ans = 2. 5. --> scf(); Рис. 1.4.1-2 Примеры использования команд scf, xdel и winsid После каждого вызова функции scf появляется графическое окно с со- ответствующем номером, а в Командном окне отображаются свойства создан- ного окна. Причем основная область графического окна называется рабочей областью, и на ней можно отображать любые графические объекты Следует отметить, что если за время сеанса не было создано ни одного графического окна, с помощью функции scf, то любая графическая функция создает ее автоматически. 109 Построение графиков функций от одной переменной Начнем знакомство с графической системой Scilab построением гра- фика функции одной переменной. Самым простым способом построения гра- фика функции y=f(x) является формирование двух векторов одинаковой длины (вектора значений аргументов x и вектора соответствующих им значе- ний функции у ) с последующим выполнением функции plot(x,y) . Функция plot(x,y) открывает графическое окно и отображает в нем график функции y(x) Рассмотрим, например, построение графика функции 2 x y e на отрезке [-1.5;1.5]. В результате выполнения функции plot(x,y) появляется Графическое окно 0 с графиком функции (рис.1.4.1-3). --> // Построение графика функции --> --> x = -1.5 : 0.01 : 1.5; --> y = exp(-x.^2); --> plot(x, y) Рис. 1.4.1-3. Построение графика функции 2 x y e Обратите внимание, что элемент меню графического окна File имеет команду Копировать в буфер обмена, которая позволяет копировать окно в буфер обмена, и, которое впоследствии можно вставить в Word или другой текстовый редактор. 110 Можно построить в одном графическом окне графики нескольких гра- фиков функций. На рис.1.4.1-4 приведен пример построения в одном окне трех графиков. --> // Построение в одном окне графиков 3-х функций --> --> x = 0:0.01:%pi; --> y = [sin(x)', sin(2*x)', sin(4*x)']; --> plot(x', y) Рис. 1.4.1-4. Построение в одном графическом окне графиков 3-х функций При построении нескольких графиков в одном окне каждый график ав- томатически отмечается своим цветом (в нашем случае красным, синим и зе- леным). Однако при печати в черно-белом варианте этот эффект теряется. В Scilab при выводе графика можно заменить принятый по умолчанию цвет и тип точек, с помощью которых строится каждый график (рис. 1.4.1-5). Для быстрой настройки вида линий на графике можно использовать свойство Line_style Line_style – это необязательный аргумент, который мо- жет быть использован внутри команды построения графика plot для настройки вида каждой новой линии. Он должен быть указан в виде соединён- ных строк, содержащих информацию о цвете, стиле линий или маркеров. Он очень полезен для быстрого определения этих основных свойств линий. Например, чтобы определить красную штрихпунктирную линию с ром- бовидными маркерами, строка должна быть в виде 'r-.diam' . Причем, полное написание значения каждого свойства не обязательно, однако строка, которая является связкой (в любом порядке) этих трёх типов свойств, должна оста- ваться однозначной. Кроме того, определение строки не чувствительно к ре- гистру. Элементы Line_style , которые можно использовать в plot для задания типа и цвета линий показаны на рис.1.4.1-5 и рис.1.4.1-6 соответственно. 111 Определитель Стиль линии - Сплошная линия (по умолчанию) -- Штриховая линия : Пунктирная линия -. Штрихпунктирная линия Рис. 1.4.1-5. Символы, указывающие на тип линии Определитель Цвет r Красный g Зелёный b Синий c Голубой m Пурпурный y Жёлтый k Чёрный w Белый Рис. 1.4.1-6. Символы, указывающие на цвет линии Если не указан цвет (ни с помощью Line_style , ни с помощью ГлобальногоСвойства) , то будет использоваться таблица цветов, устанавливае- мых по умолчанию. Во время отображения множества линий, команда plot ав- томатически перебирает в цикле эту таблицу. Тип_маркера – строка, определяющая тип маркера. Заметьте, что, если указывается маркер без стиля линии, то будут нарисованы только маркеры. Это свойство связано со свойствами объекта |