- •Введение
- •Командное окно
- •Редактирование командной строки.
- •Длинные командные строки.
- •Вывод на печать командного окна.
- •Запуск внешних программ.
- •!Notepad
- •Команда format.
- •Выражения
- •Переменные.
- •Inf бесконечность
- •Операторы.
- •Функции.
- •Текстовые комментарии и символьные константы.
- •Операции с рабочей областью
- •Операции с файлами
- •Дневник командного окна
- •Операции с векторами и матрицами
- •Оператор «двоеточие».
- •Векторные индексы.
- •Удаление строк и столбцов.
- •Объединение матриц.
- •Транспонирование матриц.
- •Создание матриц с заданными свойствами.
- •Создание вектора равноотстоящих точек.
- •Создание вектора равноотстоящих точек в логарифмическом масштабе.
- •Разреженные матрицы.
- •Графика
- •Команда plot.
- •Графические объекты.
- •Окна изображений.
- •Добавление кривых на существующий график.
- •Управление осями.
- •Разбиение графического окна.
- •Подписи к осям и заголовки.
- •Графики в полярной системе координат.
- •Контурные графики и графики полей градиентов.
- •Создание массивов данных для трехмерной графики.
- •Построение графиков трехмерных поверхностей.
- •Программирование в системе matlab.
- •Основные типы данных.
- •Арифметические операторы и массивы.
- •Операторы отношения.
- •Логические операторы и функции.
- •Приоритет выполнения операторов.
- •Структура файлов сценариев.
- •Структура m-файлов функций.
- •Использование подфункций.
- •Операторная функция.
- •Передача данных через глобальные переменные.
- •Параметры функционального типа.
- •Функции с переменным числом аргументов.
- •Управление потоками.
- •If expression1
- •Диалоговый ввод.
- •Численные методы и обработка данных
- •Решение систем линейных алгебраических уравнений.
- •Решение систем линейных уравнений итерационными методами.
- •Обратная матрица и определитель.
- •Факторизация Холецкого.
- •Lu факторизация.
- •Qr факторизация.
- •Матричная экспонента.
- •Собственные значения и собственные вектора.
- •Нормальная форма Жордана.
- •Разложение Шура.
- •Сингулярное разложение.
- •Численное интегрирование.
- •Представление полиномов в среде matlab.
- •Умножение и деление многочленов.
- •Вычисление производной от многочлена.
- •Решение систем нелинейных уравнений.
- •Преобразование Фурье.
- •Xlabel('time (seconds)')
- •Решение обыкновенных дифференциальных уравнений.
- •Численное решение дифференциальных уравнений в частных производных.
- •Литература
If expression1
statements
elseif expression2
statements
else
statements
end
Оператор if вычисляет логическое выражение expression1 и выполняет группу операторов statements, если выражение истинно. Необязательные ключевые слова elseif и else служат для выполнения альтернативных групп операторов. Ключевое слово end, которое согласуется с if, завершает последнюю группу операторов. Рассмотрим в качестве примера построение квадратной трехдиагональной матрицы, которая возникает при аппроксимации производной второго порядка на равномерной сетке узлов:
for i=1:5
for j=1:5
if i == j
a(i, j) = 2;
elseif abs(i–j) == 1
a(i, j) = –1;
else
a(i, j) = 0;
end
end
end
a
a =
2 -1 0 0 0
-1 2 -1 0 0
0 -1 2 -1 0
0 0 -1 2 -1
0 0 0 -1 2
Оператор switch имеет следующую структуру:
switch switch_expr
case case_expr
statement,...,statement
case {case_expr1, case_expr2, case_expr3,...}
statement,...,statement
...
otherwise
statement,...,statement
end
Оператор switch выполняет группу операторов, базируясь на значении переменной или выражении switch_expr. Ключевые слова case и otherwise разделяют эти группы. Выполняется только первый соответствующий случай. Необходимо использовать end для согласования с switch. Предыдущий пример можно переписать, используя оператор switch следующим образом:
for i=1:5
for j=1:5
switch i–j
case 0
a(i, j) = 2;
case {1, –1}
a(i, j) = –1;
otherwise
a(i, j) = 0;
end
end
end
В отличие от языка Си, оператор switch в MATLAB “не проваливается”. Если первый случай является истинным, другие случаи не рассматриваются. Таким образом, нет необходимости использовать оператор break.
Оператор цикла for повторяет группу операторов фиксированное число раз. Ключевое слово end ограничивает тело цикла. Циклы могут быть вложенными, как показано в предыдущем примере.
Оператор цикла while повторяет группу операторов определенное число раз, пока выполняется логическое условие. Ключевое слово end ограничивает тело цикла. Рассмотрим программу, иллюстрирующую работу операторов while и if для нахождения одного из корней многочлена x3-2x-5. В программе реализован метод дихотомии.
a = 0; fa = –Inf;
b = 3; fb = Inf;
while b–a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x
x =
2.0946
Оператор break позволяет досрочно выходить из циклов for или while. Во вложенных циклах break осуществляет выход только из самого внутреннего цикла. В качестве примера рассмотрим цикл while, который используется для чтения m-файла fft.m в символьный массив. Оператор break используется для выхода из цикла, как только будет встречена первая нулевая строка. В результате символьный массив будет содержать описание fft программы.
fid = fopen('fft.m', 'r');
s = '';
while ~feof(fid)
line = fgetl(fid);
if isempty(line), break, end
s = strvcat(s, line);
end