2.4 Создание новых массивов на основе существующих
Индексация при помощи двоеточия удобна при выделении части из большого объема данных в новый массив. Пусть задан вектор W
>> W=[0.1 2.2 3.4 5.6 3.1 6.8 9.7]
W =
0.1000 2.2000 3.4000 5.6000 3.1000 6.8000 9.7000
Составим вектор P, состоящий из всех элементов вектора W, кроме третьего, используя двоеточие и сцепление строк:
>> P=[W(1:2) W(4:7)]
P =
0.1000 2.2000 5.6000 3.1000 6.8000 9.7000
Выделение блоков матриц также осуществляется индексацией с помощью двоеточия. Введем матрицу
>> P=[1 2 0 2;4 10 12 5;0 11 10 5;9 2 3 5]
P =
1 2 0 2
4 10 12 5
0 11 10 5
9 2 3 5
Выделим из нее матрицу размером 2×2, находящуюся в центре:
>> P1=P(2:3,2:3)
P1 =
10 12
11 10
Вставим на это же место матрицу F размером 2×2:
>> F=[3 -7;4 11]
F =
3 -7
4 5
>> P(2:3,2:3)=F
P =
1 2 0 2
4 3 -7 5
0 4 11 5
9 2 3 5
Для удаления отдельных столбцов и строк матрицы используются пустые квадратные скобки [ ]. Удалим второй столбец матрицы P:
>> P(:,2)=[]
P =
1 0 2
4 -7 5
0 11 5
9 3 5
А теперь удалим вторую строку:
>> P(2,:)=[]
P =
1 0 2
0 11 5
9 3 5
«Растянуть» матрицу Р в единый вектор-столбец V можно с помощью простой записи:
>> V=P(:)
V =
1
0
9
0
11
3
2
5
5
«Расширять» матрицу, составляя ее из отдельных заданных матриц («блоков»), можно тоже довольно просто. Если заданы несколько матриц - блоков A1, A2,…,AN с одинаковым числом строк, то из них можно «слепить» единую матрицу А, объединяя блоки в одну «строку» операцией горизонтального сцепления A=[A1,A2,…,AN]. Аналогично вертикальное сцепление матриц можно реализовать при условии, что все составляющие блоки - матрицы имеют одинаковое число столбцов, применяя для отделения блоков вместо запятой точку с запятой: A=[A1;A2;…,AN].
Пример горизонтального сцепления:
>> A1=[1 2 3;4 5 6;7 8 9]
A1 =
1 2 3
4 5 6
7 8 9
>> A2=[10;11;12]
A2 =
10
11
12
>> A3=[14 15;16 17;18 19]
A3 =
14 15
16 17
18 19
>> A=[A1,A2,A3]
A =
1 2 3 10 14 15
4 5 6 11 16 17
7 8 9 12 18 19
Пример вертикального сцепления:
>> B1=[1 2 3 4 5]
B1 =
1 2 3 4 5
>> B2=[6 7 8 9 10;11 12 13 14 15]
B2 =
6 7 8 9 10
11 12 13 14 15
>> B3=[17 18 19 20 21]
B3 =
17 18 19 20 21
>> B=[B1;B2;B3]
B =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
17 18 19 20 21
Построение таблицы значений функции
Пусть требуется вывести в командное окно таблицу значений функции
y = 3e-0,5xsinx при изменении аргумента х от 0 до 5 с шагом 0,5. Вычисление массива значений этой функции в указанных условиях можно осуществить с помощью простых операторов:
>> a=3;h=0.5;x=0:.5:5;y=a*exp(-h*x).*sin(x);
>> x
x =
Columns 1 through 10
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000
Column 11
5.0000
>> y
y =
Columns 1 through 10
0 1.1201 1.5311 1.4135 1.0035 0.5144 0.0945 -0.1829 -0.3073 -0.3091
Column 11
-0.2361
Результат, отображенный на экране, не похож на таблицу. Построим таблицу в виде столбцов значений переменной и функции, используя вертикальное сцепление:
>> disp([x' y'])
0 0
0.5000 1.1201
1.0000 1.5311
1.5000 1.4135
2.0000 1.0035
2.5000 0.5144
3.0000 0.0945
3.5000 -0.1829
4.0000 -0.3073
4.5000 -0.3091
5.0000 -0.2361
Yandex.RTB R-A-252273-3- Основы работы и программирования, компьютерная математика Учебный курс
- Isbn ооо «Харвест», 2008
- Предисловие
- Введение
- Глава 1 знакомство с matlab и простейшие вычисления
- 1.1. Рабочая средаMatlab
- 1.2. Арифметические вычисления
- 1.3. Вещественные числа
- 1.4. Форматы вывода результата вычислений
- 1.5 Комплексные числа
- 1.6 Векторы и матрицы
- 1.7 Встроенные функции. Функции, задаваемые пользователем
- 1.8 Сообщения об ошибках и их исправление
- 1.9 Просмотр и сохранение переменных
- 1.10 Матричные и поэлементные операции над векторами и матрицами
- 1.11 Решение систем линейных уравнений
- Вопросы для самопроверки
- Глава 2 работа с массивами
- 2.1 Создание векторов и матриц
- 2.2 Применение команд обработки данных к векторам и матрицам
- 2.3 Создание специальных матриц
- 2.4 Создание новых массивов на основе существующих
- 2.5 Вычисление собственных значений и собственных векторов. Решение типовых задач линейной алгебры
- Вопросы для самопроверки
- Глава 3 м-файлы
- 3.1 Файл-программы
- 3.2 Файл-функции
- Вопросы для самопроверки
- Глава 4 программирование
- 4.1 Операторы отношения и логические операторы
- 4.2 Операторы цикла
- 4.3 Операторы ветвления
- 4.4 Оператор переключения switch
- 4.5 Оператор прерывания цикла break
- 4.6 Пример сравнения быстродействия матричных и скалярных операций
- Вопросы для самопроверки
- Глава 5 высокоуровневая графика
- 5.1 2D графика
- 5.1.1 Графики в линейном масштабе
- 5.2 Специальные виды 2d - графиков
- 5.2.1 Представление функции в виде дискретных отсчетов
- 5.2.2 Лестничные графики
- 5.2.3 Графики с указанием погрешности
- 5.2.4 Графики в логарифмическом и полулогарифмическом масштабах
- 5.2.5 Графики параметрических функций
- 5.3 3D графика
- 5.3.1 Линейчатые поверхности
- 5.3.2 Каркасные поверхности
- 5.3.3 Контурные графики
- 5.3.4 Сплошная освещенная поверхность
- 5.4 Оформление, экспорт и анимация
- 5.4.1 Оформление графиков
- 5.4.2 Сохранение и экспорт графиков
- 5.4.3 Анимация
- Вопросы для самопроверки
- Глава 6 прикладная численная математика
- 6.1 Операции с полиномами
- 6.2 Решение уравнений и их систем
- 6.3 Минимизация функции одной переменной
- 6.4 Минимизация функции нескольких переменных
- 6.5 Вычисление определенных интегралов
- 6.6 Решение дифференциальных уравнений
- 6.7 Аппроксимация и интерполяция данных
- 6.8 Интерполяция двумерных и многомерных данных
- Вопросы для самопроверки
- Глава 7 символьные вычисления
- 7.1 Символьные переменные, константы и выражения
- 7.2 Вычисления с использованием арифметики произвольной точности
- 7.3 Команды упрощения выражений – simplify, simple
- 7.4 Команда расширения выражений – expand
- 7.5 Разложение выражений на простые множители – команда factor
- 7.6 Приведение подобных членов – команда collect
- 7.7 Обеспечение подстановок – команда subs
- 7.8 Вычисление пределов – команда limit
- 7.9 Вычисление производных – команда diff
- 7.10 Вычисление интегралов – команда int
- 7.11 Разложение в ряд Тейлора – команда taylor
- 7.12 Вычисление суммы ряда – команда symsum
- 7.13 Решение уравнений и их систем – команда solve
- 7.14 Решение дифференциальных уравнений – команда dsolve
- 7.15 Прямое и обратное преобразования Лапласа – команды laplace,ilaplace
- 7.16 Графики символьных функций – команды ezplot, ezpolar
- 7.17 Прямой доступ к ядру системы Maple – командаmaple
- 7.18 Разложение рациональной дроби на сумму простейших дробей
- 7.19 Интерполяционный полином Лагранжа
- 7.20 Решение неравенств и систем неравенств
- 7.21 Разложение в ряд Тейлора функции нескольких переменных
- 7.22 Решение дифференциальных уравнений с помощью степенных рядов
- 7.23 Решение тригонометрических уравнений
- Вопросы для самопроверки
- Приложения Приложение 1. Справочная система matlab
- Приложение 2. Знакомство с пакетами расширения системыMatlab
- Приложение 3. Задания для самостоятельной работы
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Литература