24 Фев

Научное программирование для студентов (Matlab, Scilab). Лекция 2

Слайд19Представление данных в средах научного программирования.

Для начала работы с данными необходимо разграничение понятий данных и информации.

Данные являются результатом инструментальных наблюдений и измерений, исходный материал для получения новых знаний. Информациязнание, т.е. результат анализа и осмысления данных.

Данные в средах научного программирования Scilab и Matlab (Octave) представлены массивами, векторами и матрицами.

Простейшее устройство получения данных – датчик, присоединенный к микроконтроллеру Arduino. Собирает и отправляет на компьютер преобразованные в физическую величину напряжение с датчика и время наблюдений:

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 столбца. Такая матрица называется двумерной.

Вывод 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 =

  1. 2.   3.   4.   5.

Массив-столбец:

Column_arr=[1; 2; 3; 4; 5]   //объявление

Вывод Scilab:

Column_arr  =
1.
2.
3.
4.
5.

Сведения о природных объектах и промышленных образцах получаются в ходе замеров (опробования):

Слайд19

Исходные данные наблюдений часто представлены в виде таблиц, разделяющиеся на строки (единичные замеры) и столбцы (измеренные параметры):

Таблица экспериментальных данных полевых наблюдений

Для задания такой таблицы в 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.

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

Матричные операции Scilab

Выполнение приведенных операций возможно при совпадении размерности матриц, т.е. равном количестве  строк и столбцов. На матричных операциях основаны многие графические фильтры, приемы обработки изображений и т.д.

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

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) используются для создания матриц нулей и единиц:

-->ones(1,3) //Формируется вектор-строка
 ans = 1. 1. 1. 
-->ones(2,2) //Формируется квадратная матрица 
ans = 1. 1. 1. 1. 
-->m=3; n=2; 
-->zeros(3,2)
 ans = 0. 0. 0. 0. 0. 0.
 -->M=[1 2 3 4 5]; 
-->Z=zeros(M)
 Z= 0. 0. 0. 0. 0.

Продолжение следует…

Литература.

  1. Поршнев С. В. Компьютерное моделирование физических процессов в пакете MATLAB / М.:, 2003. 593 с.
  2. Алексеев Е.Р. , Чеснокова О.В. Введение в Octave для инженеров и математиков: / Е.Р. Алексеев, О.В.Чеснокова М.: ALT Linux, 2012. 368 с.
  3. Материалы по продуктам MATLAB & Toolboxes // [Электронный ресурс]: Математический сайт Exponenta.ru. Веб-сайт. URL: http://matlab.exponenta.ru/index.php (Дата обращения: 05.11.2015)

Добавить комментарий