MATLAB_3_Использование_данных_в_виде_массивов
.pdfИспользование данных в виде массивов
Комплексные числа
Библиотека математических функций
Массивы, как и скалярные данные, в MatLab не требуют особых способов описания при создании, достаточно присвоить какой-либо переменной значение в виде массива.
Например, командой
>> x = rand(2, 5, 3)
будет создан массив (трёхмерный) случайных чисел размером 2х5х3 и связан с переменной х.
Примечание: функция rand возвращает псевдослучайные числа с равномерным распределением в интервале (0, 1).
Доступ к элементам массива производится с помощью индексной ссылки на элемент:
a(i), Х(i, j, 3), myArray(p+q, 1)
Важно! Индекс элемента массива должен быть положительным целым числом (индексация начинается с 1!!!) или результатом вычисления математического или логического выражения и не должен выходить за пределы массива.
Примечание: скалярная переменная — тоже массив размера 1 x 1 x 1 x 1 x 1 x 1 x … x 1 ;)
После первого определения при необходимости переменной можно присваивать другие значения, как скалярные, так и в виде массивов. Эти процедуры также не требуют переопределения типов и указания размеров:
>>x = 10; % присвоено скалярное значение
>>x = linspace(0, 10, 11); % х связана с одномерным массивом
>>x = ones(5, 5); % х связана с двумерным массивом
Все эти операции могут быть выполнены последовательно друг за другом в любом пордяке. После каждой из них размерность и размеры массива изменяются.
>> x = linspace(0, 10, 11)
Общий синтаксис: linspace(а, b, n)
- формирует линейный массив размера 1хn такой, что x(1) = a, x(n) = b, x(k) = a + (k-1)*(b-a)/(n-1)
т.е. все элементы массива распределены равномерно между a и b.
>> x = ones(5, 5)
Общий синтаксис: ones(n, m, p, q, ...)
- создаёт массив из единиц размера n х m х p х q...
Похожие функции:
zeros(n, m, p, q, …)
- создаёт массив из нулей размера n х m х p х q...
rand(n, m, p, q, …)
- создаёт массив размера n х m х p х q... из псевдослучайных чисел с равномерным распределением в интервале (0, 1)
Массивы можно инициализировать явно, используя группирующие скобки []. Например, команда:
>> a = [-1 5 2 -3 10]
создаст массив-строку с элементами -1, 5, 2, -3, 10.
Создать одномерный массив-вектор можно, используя операцию транспонирования «’» (символ одиночная кавычка) из массива-строки:
b = a’
или с помощью операции объединения, используя группирующие скобки [] и разделитель «;» (символ точка с запятой)
с = [6; -1; 7; 8; 0].
Операция объединения позволяет также дополнять массивы новыми элементами или явно конструировать многомерные массивы. После команды
>> а = [21, -3, a, 5]
массив а длины 4 из прошлого примера превратится в массив длины 7 с элементами
21 -3 -1 5 2 -3 10 5.
Командой
>> [ones(1, 20) rand(1, 3) zeros(1, 4)]
будет создан безымянный массив из 20 единиц, 3 случайных чисел и 4 нулей
Пример формирования массивов с помощью объединений:
>> a = rand(2, 2) |
|
|
a = |
|
|
0.959492426392903 |
0.035711678574190 |
|
0.655740699156587 |
0.849129305868777 |
|
>>b = ones(1, 3); c = zeros(1, 2) |
|
|
>>d = [[a c']; b] |
|
|
d = |
|
|
0.959492426392903 |
0.035711678574190 |
0 |
0.655740699156587 |
0.849129305868777 |
0 |
1.000000000000000 |
1.000000000000000 |
1.000000000000000 |
В MatLab можно производить основные математические операции +, -, *, / и возведение в степень ^ над массивами, как над обычными переменными без привычных для других языков программирования циклических конструкций.
При сложении и вычитании массивов их размеры и размерности должны быть согласованы, т.е. для вычисления a+b и a-b необходимо, чтобы a и b имели одинаковые размеры (n x m х p x q x …).