1.3. Создание матриц
До сих пор в примерах использовались только одиночные числа (дробные и комплексные), но в MATLAB основным типом переменных являются матрицы, и даже те числа, которые встречались в примерах, с точки зрения MATLAB являются матрицами размерностью 1 x 1. В этом можно убедиться, воспользовавшись командой whos, которая выводит информацию о переменных.
>> clear
>> x = 10;
>> y = 5 + 10i;
>> whos
Name Size Bytes Class Attributes
x 1x1 8 double
y 1x1 16 double complex
Команда whos выводит информацию обо всех созданных переменных в виде столбцов: "Name" – имя переменной, "Size" – размерность матрицы, "Bytes" – объем памяти, который занимает переменная, столбцы "Class" и "Attributes" характеризуют тип переменной.
С помощью команды whos можно вывести информацию о конкретной переменной, для этого команде whos надо передать строку, содержащую имя переменной, о которой надо получить информацию:
>> whos 'x'
Name Size Bytes Class Attributes
x 1x1 8 double
Из выполнения команды whos видно, что переменные x и y представляют собой матрицы, размером 1 x 1. Для создания матриц нужной размерности используются квадратные скобки. Для создания матрицы-строки (вектора-строки) нужно перечислить элементы матрицы в квадратных скобках, разделяя элементы (столбцы матрицы) пробелом или запятыми.
>> a = [1 5 -2 10]
a =
1 5 -2 10
>> b = [0.5, -1, 2.5, 0]
b =
0.5000 -1.0000 2.5000 0
Чтобы убедиться, что были созданы именно матрицы, можно воспользоваться все той же командой whos:
>> whos 'a' 'b'
Name Size Bytes Class Attributes
a 1x4 32 double
b 1x4 32 double
Из результата выполнения этой команды видно, что переменные a и b представляют собой матрицы размером 1 x 4 (одна строка, четыре столбца), и каждая переменная занимает в памяти 32 байта вместо 8 байт, занимаемых одним элементом.
Для создания матрицы-столбца также используются квадратные скобки, только элементы матрицы (строки) разделяются переводом строк или точками с запятыми:
>> c = [ 1
0.2
11
-13]
c =
1.0000
0.2000
11.0000
-13.0000
>> whos 'c'
Name Size Bytes Class Attributes
c 4x1 32 double
Или
>> c = [1; 0.2; 11; -13]
c =
1.0000
0.2000
11.0000
-13.0000
Другой способ создания матриц-столбцов заключается в том, что можно объявить матрицу-строку и применить к ней операцию транспонирования. Для транспонирования в MATLAB предусмотрена команда «.'» (точка с одиночной кавычкой).
>> c = [1, 0.2, 11, -13].'
c =
1.0000
0.2000
11.0000
-13.0000
Подобным образом можно вводить матрицы и других размеров построчно, при этом элементы в каждой строке разделяются пробелами или запятыми, а столбцы разделяются переводами строк.
>> d = [1 0 0.5 -11
12 -0.1 0.1 7
0.33, 2.5 3 4]
d =
1.0000 0 0.5000 -11.0000
12.0000 -0.1000 0.1000 7.0000
0.3300 2.5000 3.0000 4.0000
>> whos 'd'
Name Size Bytes Class Attributes
d 3x4 96 double
Или
>> d = [1 0 0.5 -11; 12 -0.1 0.1 7; 0.33 2.5 3 4]
d =
1.0000 0 0.5000 -11.0000
12.0000 -0.1000 0.1000 7.0000
0.3300 2.5000 3.0000 4.0000
На практике часто нужно создавать матрицы определенного вида, например, нулевую матрицу, единичную матрицу и т.п. Для облегчения создания таких матриц предусмотрены специальные функции. В частности, для создания нулевых матриц используется функция zeros. Функция zeros может принимать разное количество параметров. Для создания нулевой матрицы с заданным количеством строк и столбцов используется функция zeros с двумя параметрами, первый параметр функции – это количество строк, второй параметр – количество столбцов.
>> x = zeros (4, 2)
x =
0 0
0 0
0 0
0 0
Если нужно создать квадратную нулевую матрицу, то достаточно в функцию zeros передать один параметр, задающий размерность матрицы.
>> y = zeros (4)
y =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Аналогично работают функции ones и eye. Функция ones предназначена для создания матриц, содержащих все единицы, а функция eye предназначена для создания единичных матриц, то есть матриц, содержащих единицы на главной диагонали, в то время как остальные элементы нулевые.
>> ones (4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> ones (4, 2)
ans =
1 1
1 1
1 1
1 1
>> eye (4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> eye (4, 2)
ans =
1 0
0 1
0 0
0 0
Кроме того, на практике часто встречаются задачи, когда необходимо создать матрицу-строку (или столбец) и заполнить ее последовательностью чисел с равным шагом. Для создания таких матриц в MATLAB предусмотрен следующий синтаксис:
первый элемент: шаг: последний элемент.
Например, для создания матрицы и заполнения ее числами от 1 до 5 с шагом 0.5, нужно выполнить следующую команду:
>> x = 1: 0.5: 5
x =
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000
Если шаг равен 1, то его можно опустить:
>> x = 0: 10
x =
0 1 2 3 4 5 6 7 8 9 10
Кроме того, шаг может быть отрицательным:
>> x = 10: -1: 0
x =
10 9 8 7 6 5 4 3 2 1 0
- Оглавление
- Предисловие
- Раздел 1. Основные сведения о среде программирования «matlab»
- Глава 1. Вычисления в командном режиме
- 1.1. Простейшие математические операции в matlab
- 1.2. Переменные
- 1.3. Создание матриц
- 1.4. Доступ к элементам матриц
- 1.5. Операции с матрицами
- 1.6. Ввод, вывод и работа со строками
- Глава 2. Построение графиков в matlab
- 2.1. Построение графика в виде двумерной линии
- 2.2. Оформление графиков
- 2.3. Построение трехмерных графиков
- 2.4. Построение линий уровня
- 2.5. Построение векторного поля
- 2.6. Отображение нескольких графиков в одном окне
- Глава 3. Скрипты в matlab и управляющие конструкции
- 3.1. Создание и выполнение скриптов в matlab
- 3.2. Оператор for
- 3.3. Логические операции
- 3.4. Оператор if / elseif / else
- 3.5. Оператор while
- 3.6. Операторы break / continue
- 3.7. Оператор switch
- 3.8. Создание функций
- Раздел 2. Краткие теоретические сведения и задания Тема 1. Векторный анализ
- 1.1. Элементы векторного анализа
- Задания
- Тема 2. Уравнения Максвелла (произвольная и гармоническая временная зависимость, статические, стационарные и квазистационарные поля)
- 2.1. Система уравнений электродинамики – уравнения Максвелла
- 2.2. Граничные условия. Принцип эквивалентности
- Задания
- Тема 3. Плоские волны
- 3.1. Явление дисперсии и групповая скорость
- Задания
- Тема 4. Граничные задачи, уравнения и методы
- 4.1. К классификации электромагнитных явлений
- Задания
- 4.2. Метод конечных разностей
- 4.2.1. Конечно-разностная аппроксимация
- 4.2.2. Конечно-разностная аппроксимация уравнений Лапласа и Пуассона
- 4.2.3. Конечно-разностная аппроксимация для граничных узлов
- Задания
- Литература