1.4. Доступ к элементам матриц
Для доступа к элементам матрицы используются круглые скобки, при этом номера строк и столбцов разделяются запятыми. Номера строк и столбцов нумеруются, начиная с 1:
>> x = [1 0 0.5 -11
12 -0.1 0.1 7
0.33, 2.5 3 4]
x =
1.0000 0 0.5000 -11.0000
12.0000 -0.1000 0.1000 7.0000
0.3300 2.5000 3.0000 4.0000
>> x(1, 1)
ans =
1
>> x(2, 3)
ans =
0.1000
Таким же образом можно менять значения элементов матрицы:
>> x(2, 1) = 0
x =
1.0000 0 0.5000 -11.0000
0 -0.1000 0.1000 7.0000
0.3300 2.5000 3.0000 4.0000
Другой способ индексации заключается в том, что ячейку матрицы можно задавать в виде одного числа, которое задает номер элемента, начиная отсчет от элемента (1, 1), а затем последовательно по столбцам. Это может напоминать случай, если все элементы матрицы «развернули» в одну строку, содержащие все элементы. Более понятно это показано на следующем примере применительно к матрице x из предыдущего примера:
>> x(3)
ans =
0.3300
>> x(5)
ans =
-0.1000
>> x(7)
ans =
0.5000
Благодаря этой особенности для доступа к элементам матрицы-строки или матрицы-столбца нет необходимости указывать второй индекс, в то время как для двумерных матриц этой возможностью нужно пользоваться осторожно, так как в этом случае можно легко ошибиться при расчете номера индекса.
>> a = [1 3 5 10]
a =
1 3 5 10
>> a(2)
ans =
3
>> b = [10; 15; 7; -9]
b =
10
15
7
-9
>> b(3)
ans =
7
В языке MATLAB предусмотрена возможность выделять из матрицы не только один элемент, но и диапазон элементов. Пусть, например, у нас есть матрица x, содержащая последовательность чисел от 0 до 10:
>> x = 0: 10
x =
0 1 2 3 4 5 6 7 8 9 10
Для того, чтобы выделить в отдельную матрицу последовательность элементов, используется следующая запись:
Переменная(номер первого элемента : шаг : номер последнего элемента)
Если шаг равен 1 (если нужно выделить последовательность элементов, идущих подряд), то его можно опустить. В следующем примере из матрицы x выделяется последовательность, начиная со 2-го, и по 6-й элементы:
>> x(2: 6)
ans =
1 2 3 4 5
>> x(2: 1: 6)
ans =
1 2 3 4 5
Если нужно выделить каждый второй элемент, начиная со 2-го, и по 6-й, то нужно выполнить следующую команду:
>> x(2: 2: 6)
ans =
1 3 5
Если нужно выделить последовательность элементов, заканчивающуюся последним элементом исходной матрицы, то вместо указания номера последнего элемента можно указать ключевое слово end. В следующем примере выделяются все элементы, начиная с 5-го, и до последнего:
>> x(5:end)
ans =
4 5 6 7 8 9 10
Шаг здесь также может быть отрицательным, благодаря чему можно «переворачивать» матрицы:
x(end: -1: 1)
ans =
10 9 8 7 6 5 4 3 2 1 0
Таким же образом можно выделять части двумерных матриц (или матриц с еще большим количеством измерений). Для этого в скобках сначала задается интервал выделяемых строк, а через запятую – интервал выделяемых столбцов. Например:
>> a = [1 3 10 -5; 2 4 6 8; -10 -12 0 14; 2 -2 5 7]
a =
1 3 10 -5
2 4 6 8
-10 -12 0 14
2 -2 5 7
>> a(1: 3, 1: 2)
ans =
1 3
2 4
-10 -12
Такой же способ индексации можно использовать и при использовании оператора присваивания. В этом случае всем элементам матрицы, которые попали в указанный диапазон, будет присвоено значение, указанное справа от знака присваивания:
>> a(1: 3, 1: 2) = -1
a =
-1 -1 10 -5
-1 -1 6 8
-1 -1 0 14
2 -2 5 7
Yandex.RTB R-A-252273-3
- Оглавление
- Предисловие
- Раздел 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. Конечно-разностная аппроксимация для граничных узлов
- Задания
- Литература