- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
4. Использование двоеточия
4.1. Автозаполнение
Matlab предоставляет возможность автоматического заполнения векторов, каждый элемент которых отличается от предыдущего на постоянную величину, т.е. шаг. Для этого служит двоеточие. Формирование вектора в этом случае выполняется по схеме
ИмяВектора = НачальноеЗначение : Шаг : КонечноеЗначение
Например
>> x=1:0.2:2
x =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
формируется вектор-строка из шести элементов, имеющих значение от 1 до 2 с шагом 0,2. Формирование вектора-столбца может быть выполнено следующим образом:
>> y=(-2:2:4)'
y =
-2
0
2
4
В этом примере круглые скобки используются для корректного размещения символа операции транспонирования (транспонируется весь результат – строка значений от -2 до 4 с шагом 2, а не число 4, как было бы в отсутствии скобок). Впрочем, вместо круглых скобок можно в данном примере можно использовать и более привычные для вектора квадратные скобки.
Шаг может быть и отрицательным
>> x=1:-0.2:-0.3
x =
1.0000 0.8000 0.6000 0.4000 0.2000 -0.0000 -0.2000
В этом примере последнее значение в векторе-строке не равно заданному конечному значению -0,3, т.к. шаг не укладывается в диапазон [1; -0,3] целое число раз. Поэтому Matlab заканчивает генерацию элементов вектора досрочно.
Шаг, равный единице, при автозаполнении можно и не указывать
>> x=1:5
x =
1 2 3 4 5
4.2. Индексация
Символ двоеточия может использоваться не только для автозаполнения (генерации значений элементов), но и для индексации (автоматического перечисления индексов). Пусть, например, в некотором векторе х из семи элементов
>> x=11:17
x =
11 12 13 14 15 16 17
требуется заменить нулями элементы со второго по шестой (не добавить новые элементы, а обнулить уже имеющиеся). Можно, поэлементно перечисляя интересующие элементы, каждому присвоить значение 0.
>> x(2)=0; x(3)=0; x(4)=0; x(5)=0; x(6)=0
x =
11 0 0 0 0 0 17
Результат получен за пять операций присваивания. Хлопотно! Индексация при помощи двоеточия позволяет решить эту задачу быстрее и изящнее
>> x(2:6)=0
x =
11 0 0 0 0 0 17
Последний элемент массива (матрицы или вектора) можно адресовать, используя слово end. Например, пусть требуется в векторе произвольной длины каждый элемент с нечетным номером сделать равным -1. Красивое решение этой задачи без явного циклического перебора, без непосредственной адресации элементов, с автоматическим определением конца интервала обработки может быть следующим:
>> y(1:2:end)=-1
y =
-1 2 -1 4 -1 6 -1 8 -1 10
Особенно эффективно использование двоеточия при работе с матрицами. Например, выражение a(:, 1) следует понимать как все строки первого столбца матрицы а (выделение из матрицы вектора-столбца); a(2, :) – все столбцы второй строки матрицы а (выделение из матрицы вектора-строки); а(:, 2:3) – выделение подматрицы (все строки второго и третьего столбцов матрицы); а(2:4, 3:5) – выделение подматрицы (столбцы с третьего по пятый строк со второй по четвертую); (a(2:2:end,end) – элементы четных строк последнего столбца матрицы а; а(:) – растягивание матрицы в вектор-столбец (элементы в результирующем векторе располагаются так, как они записаны в памяти (см. рис. 2.1))
>> a=[11 12 13 14; 21 22 23 24; 31 32 33 34]
a =
11 12 13 14
21 22 23 24
31 32 33 34
>> a=a(:)'
В результате получим
a =
Columns 1 through 7
11 21 31 12 22 32 13
Columns 8 through 12
23 33 14 24 34
Здесь значения элементов матрицы заданы равными их индексам (например, ). Знак транспонирования использован для преобразования в вектор-строку. Вектор-строка получилась длинной и не уместилась при эхо-печати в одну строку экрана. Поэтому Matlab распечатал результат в две строки, предварив печать каждой сообщением о номерах элементов напечатанных в ней: "Columns 1 through 7" – столбцы с 1 по 7 (элементы вектора названы столбцами, потому что получившаяся в результате растягивания и транспонирования переменная а – строка с размерами , т.е. это фактически матрица из одной строки и двенадцати столбцов).
Знак двоеточия можно использовать для адресации элементов при конкатенации
а2=[а(:, 1), b, а(:, 3)]
что означает сформировать матрицу а2 как строку (последовательность) из трех столбцов: первый взять равным первому столбцу матрицы a, второй – равным вектору-столбцу b, а третий – равным в третьему столбцу матрицы a. Как и прежде необходимо согласовывать размеры сцепляемых массивов.