Научное программирование для студентов (Matlab, Scilab). Лекция 2
Представление данных в средах научного программирования.
Для начала работы с данными необходимо разграничение понятий данных и информации.
Данные являются результатом инструментальных наблюдений и измерений, исходный материал для получения новых знаний. Информация – знание, т.е. результат анализа и осмысления данных.
Данные в средах научного программирования Scilab и Matlab (Octave) представлены массивами, векторами и матрицами.
Простейшее устройство получения данных – датчик, присоединенный к микроконтроллеру Arduino. Собирает и отправляет на компьютер преобразованные в физическую величину напряжение с датчика и время наблюдений:
Микроконтроллер Arduino c температурным датчиком.
Данные в средах научного программирования – массивы, т.е. векторы и матрицы.
Массив данных – последовательность данных какого-либо типа (численного или символьного). Используется вместо объявления многих переменных. Массив имеет имя, а данные в нем – порядковый номер или индекс.
names = ['Mikhail', 'Anna', 'Boris', 'Han Li']; //объявление одномерного массива, содержащего строковые значения
Массивы объявляются в квадратных скобках “[ ]”, через запятую или пробел. Нумерация начинается с 1.
Вызов элемента массива №1 (Mikhail):
names(1) //names - имя массива, 1 в скобках - порядковый номер
Одномерные (т.е. содержащие только одну строку или столбец) массивы носят название векторов. Создавать массивы можно несколькими путями:
1. С помощью поэлементного ввода (как было показано на примере names):
My_array=[1 2 3 4 5]
Будет создан массив My_array, содержащий целые числа от 1 до 5.
2. Указанием начального и конечного элементов и шага между ними.
My_array=1:2:10
В результате такого ввода в командном окне появится
My_array =
1. 3. 5. 7. 9.
3. С помощью специальных функций. Например, функция rand(2,3) создаст в Scilab матрицу случайных чисел от 0 до 1 размером 2 строки на 3 столбца. Такая матрица называется двумерной.
A=rand(2,3)
Вывод Scilab:
A =
0.2113249 0.0002211 0.6653811
0.7560439 0.3303271 0.6283918
Одномерные матрицы или векторы разделяются на матрицы-строки, аналогичные объявленным выше names и My_array и матрицы-столбцы.
Массив-строка:
String_arr=[1 2 3 4 5] //объявление
Вывод Scilab:
String_arr =
- 2. 3. 4. 5.
Массив-столбец:
Column_arr=[1; 2; 3; 4; 5] //объявление
Вывод Scilab:
Column_arr =
1.
2.
3.
4.
5.
Сведения о природных объектах и промышленных образцах получаются в ходе замеров (опробования):
Исходные данные наблюдений часто представлены в виде таблиц, разделяющиеся на строки (единичные замеры) и столбцы (измеренные параметры):
Для задания такой таблицы в Scilab надо применять двумерные массивы, иначе называемые матрицами.
Ввод элементов матрицы также осуществляется в квадратных скобках, при этом элементы строки отделяются друг от друга пробелом или запятой, а строки разделяются между собой точкой с запятой:
name=[x11, x12, …, x1n; x21, x22, …, x2n; …; xm1, xm2, …, xmn] ;
Обратиться к элементу матрицы можно, указав после имени матрицы, в круглых скобках через запятую, номер строки и номер столбца на пересечении которых элемент расположен:
Объявим матрицу и произведем действия с отдельными ее элементами.
//Объявление матрицы
A=[1 2 3;4 5 6;7 8 9]
Вывод Scilab:
A = 1. 2. 3.
4. 5. 6.
7. 8. 9.
//Выполним действия с элементами матрицы, как с числами
A(1,2)^A(2,2)/A(3,3)
В результате этих действий Scilab вычислит результат и присвоит его временной переменной ans:
ans = 3.5556
Объединение матриц носит название «конкатенация». Она может быть горизонтальной и вертикальной:
//объявление матриц v1, v2, v3
v1=[1 2 3];
v2=[4 5 6];
v3=[7 8 9];
//Горизонтальная конкатенация векторов-строк:
V=[v1 v2 v3]
В результате выполнения кода выше Scilab выведет:
V=1. 2. 3. 4. 5. 6. 7. 8. 9.
//объявление матриц v1, v2, v3
v1=[1 2 3];
v2=[4 5 6];
v3=[7 8 9];
//Вертикальная конкатенация векторов-строк:
V=[v1; v2; v3]
В результате выполнения последнего кода Scilab выведет:
V=
1. 2. 3.
4. 5. 6.
7. 8. 9.
Для выбора части матрицы, подматрицы или отдельного ряда применяется символ «:». Указывая его вместо индекса при обращении к массиву, можно получать доступ к группам элементов.
V = [1 2 3; 4 5 6; 7 8 9]
select1=V(:,1) //Выбор 1-го столбца в переменную select1
Выполнение кода выше выведет
select1 = 1.
4.
7.
Для выбора субматрицы необходимо указать диапазоны по рядам и столбцам:
V =
1. 2. 3.
4. 5. 6.
7. 8. 9.
-->select2=V(1,:) //Выбор 1-й строки
select2 =
1. 2. 3.
-->select3=V(2:3,1:2) //Выбор части матрицы (обрезка)
select3 =
4. 5.
7. 8.
Действия между матрицами возможны при совпадении их столбцов и строк и выполняются с помощью операторов, приведенных на рисунке:
Выполнение приведенных операций возможно при совпадении размерности матриц, т.е. равном количестве строк и столбцов. На матричных операциях основаны многие графические фильтры, приемы обработки изображений и т.д.
Существуют также специальные матричные функции, служащие целям преобразования и создания специальных матриц.
matrix(A,n,m) — преобразует матрицу A в матрицу другого размера, n - количество строк, m - количество столбцов
Пример выполнения:
—>D=[1 2;3 4;5 6];
—>matrix(D,2,3)
ans = 1. 5. 4. 3. 2. 6.
—>matrix(D,3,2)
ans = 1. 2. 3. 4. 5. 6.
—>matrix(D,1,6)
ans = 1. 3. 5. 2. 4. 6.
—>matrix(D,6,1)
ans = 1. 3. 5. 2. 4. 6.
Функции ones(n,m) и zeros(n,m) используются для создания матриц нулей и единиц:
Продолжение следует…
Литература.
- Поршнев С. В. Компьютерное моделирование физических процессов в пакете MATLAB / М.:, 2003. 593 с.
- Алексеев Е.Р. , Чеснокова О.В. Введение в Octave для инженеров и математиков: / Е.Р. Алексеев, О.В.Чеснокова М.: ALT Linux, 2012. 368 с.
- Материалы по продуктам MATLAB & Toolboxes // [Электронный ресурс]: Математический сайт Exponenta.ru. Веб-сайт. URL: http://matlab.exponenta.ru/index.php (Дата обращения: 05.11.2015)