Автор работы: Пользователь скрыл имя, 10 Октября 2012 в 18:07, курс лекций
Работа содержит курс лекций по дисциплине "ФПрограммирование ии компьютеры" на тему: "Основы программирования в MatLab.doc"
Введение
Глава 1. Структура программы. Основные математические операции и типы данных
1.1. Структура программы пакета MatLab
1.2. Простые переменные и основные типы данных в MatLab
1.3. Арифметические операции с простыми переменными
1.4. Основные математические функции MatLab
1.5. Векторы и матрицы в MatLab
1.6. Операции над матрицами и векторами
1.7. Структуры в MatLab
1.8. Ячейки в MatLab
Глава 2. Условные операторы и циклы в MatLab
2.1. Условный оператор if
2.2. Условный оператор switch
2.3. Оператор цикла while
2.4. Оператор цикла for
Глава 3. Работа с графиками в MatLab
3.1. Функция plot
3.2. Оформление графиков
3.3. Отображение трехмерных графиков
3.4. Отображение растровых изображений
Глава 4. Программирование функций в MatLab
4.1. Порядок определения и вызова функций
4.2. Область видимости переменных
Глава 5. Работа с файлами в MatLab
5.1. Функции save и load
5.2. Функции fwrite и fread
5.3. Функции fscanf и fprintf
5.4. Функции imread и imwrite
Основы программирования в MatLab
Наместников С.М. / Сборник лекций: УлГТУ, Ульяновск. - 2011
Оглавление
Введение
Глава 1. Структура программы. Основные математические операции и типы данных
1.1. Структура программы пакета MatLab
1.2. Простые переменные и основные типы данных в MatLab
1.3. Арифметические операции с простыми переменными
1.4. Основные математические функции MatLab
1.5. Векторы и матрицы в MatLab
1.6. Операции над матрицами и векторами
1.7. Структуры в MatLab
1.8. Ячейки в MatLab
Глава 2. Условные операторы и циклы в MatLab
2.1. Условный оператор if
2.2. Условный оператор switch
2.3. Оператор цикла while
2.4. Оператор цикла for
Глава 3. Работа с графиками в MatLab
3.1. Функция plot
3.2. Оформление графиков
3.3. Отображение трехмерных графиков
3.4. Отображение растровых изображений
Глава 4. Программирование функций в MatLab
4.1. Порядок определения и вызова функций
4.2. Область видимости переменных
Глава 5. Работа с файлами в MatLab
5.1. Функции save и load
5.2. Функции fwrite и fread
5.3. Функции fscanf и fprintf
5.4. Функции imread и imwrite
Среди множества существующих
математических пакетов, таких как
Mathematica, MathCad и др., система MatLab занимает
лидирующее место благодаря удобному
встроенному языку
В данном учебном пособии
Первым шагом на пути создания математических алгоритмов является изучение структуры программы и набора математических операций, доступных языку программирования. В частности, в данной главе будут рассмотрены математические операции и функции пакета MatLab, связанные с обработкой как скалярных, так и матричных переменных.
Как правило, каждая программа в MatLab представляет собой функцию и начинается с ключевого слова function, за которым через пробел следует ее название. Например,
function
Lab1
a = 5;
b = 2;
c = a*b;
Данная программа заключена в функции с именем Lab1 и вычисляет произведение двух переменных а и b. При сохранении программы в m-файл рекомендуется указывать имя файла, совпадающее с именем функции, т.е. в данном случае – Lab1.
Следует отметить, что в одном m-файле можно задавать множество дополнительных функций. Для этого достаточно написать в конце листинга основной программы еще одно ключевое слово function и задать ее имя, например,
function
Lab1
a = 5;
b = 2;
c = a*b;
out_c(c); %
вызов функции out_c()
function out_c(arg_c)
% определение функции out_c()
disp(arg_c);
Обратите внимание, что функцию out_c() можно вызывать в основной программе до ее определения. Это особенность языка MatLab, позволяющая не беспокоиться программисту о последовательности задания функций. В приведенном примере функция out_c() имеет один входной параметр с именем arg_c, который выводится на экран (в командное окно MatLab) с помощью встроенной функции disp(). В итоге, при выполнении приведенной программы в командном окне MatLab будет отображено значение переменной c.
Дополнительные функции можно оформлять и в отдельных m-файлах. Например, если есть необходимость какую-либо функцию описать в одном m-файле, а вызывать ее в другом, то это можно реализовать следующим образом.
1-й файл (Lab1.m)
function
Lab1 |
2-й файл (square.m) |
function
res=square(a, b) |
При выполнении функции Lab1 система MatLab вызовет функцию square из файла square.m. Это будет сделано автоматически, т.к. встроенные функции языка MatLab определены также и вызываются из файлов, имена которых, как правило, соответствуют именам вызываемых функций. Обратите также внимание на то, что функция square() не только принимает два аргумента a и b, но и возвращает их произведение с помощью переменной res. Представленный синтаксис следует использовать всякий раз, когда требуется возвратить результат вычислений основной программе. В четвертой главе данного пособия более подробно изложены конструкции вызова функций для реализации разнообразных алгоритмов.
Создание программы, как правило, начинается с определения переменных и способа представления данных. Следовательно, чтобы правильно организовать описание данных программы, необходимо знать как задавать переменные в MatLab и какие виды переменных возможны.
Самый простой и наиболее
распространенный тип данных – это
число. В MatLab число хранится в переменной,
которая имеет некоторое
a = 5;
задает переменную с именем a и присваивает ей значение 5. По умолчанию переменная а является вещественной (тип double), т.е. может принимать дробные значения, например,
a = -7.8;
задает значение переменной а равное -7,8. Изменить тип переменной можно, указав тип присваиваемого числа с помощью соответствующего ключевого слова, например,
a = int16(5);
выполнит присваивание числа 5 как целочисленного 16-битового значения. В результате выполнения такой операции тип переменной a будет соответствовать int16.
Типы данных, доступные в MatLab, представлены в табл. 1.1.
Таблица 1.1. Основные типы данных в MatLab
double |
вещественный, 64 бит |
single |
вещественный, 32 бит |
int8 |
знаковый целочисленный, 8 бит |
int16 |
знаковый целочисленный, 16 бит |
int32 |
знаковый целочисленный, 32 бит |
int64 |
знаковый целочисленный, 64 бит |
uint8 |
беззнаковый целочисленный, 8 бит |
uint16 |
беззнаковый целочисленный, 16 бит |
uint32 |
беззнаковый целочисленный, 32 бит |
uint64 |
беззнаковый целочисленный, 64 бит |
По умолчанию используется тип double, который имеет наибольшую точность представления вещественного числа и является потому универсальным типом. Однако, если необходимо экономить память ЭВМ, то можно указывать самостоятельно желаемый тип.
Последнее, что следует знать при задании переменных – это правило определения их имен. В MatLab имена переменных могут задаваться только латинскими буквами, цифрами и символом ‘_’. Причем, первый символ в имени должен соответствовать букве латинского алфавита. Также следует отметить, что имена
arg
= 1;
Arg = 2;
ARG = 3;
это три разных имени, т.е. три разные переменные со значениями 1, 2 и 3 соответственно. Данный пример показывает, что MatLab различает регистр в именах переменных.
При программировании лучше всего задавать осмысленные имена переменных, по которым можно было бы понять какие данные они представляют. Это позволяет избежать путаницы при построении больших программ.
Рассмотрим базовые арифметические операции над простыми переменными в MatLab. Пусть заданы две переменные a и b. Тогда операции сложения, вычитания, умножения и деления запишутся так:
c
= a+b; % сложение
c = a-b; % вычитание
c = a*b; % умножение
c = a/b; % деление
Дополнительно, в MatLab определена операция возведения в степень, которая записывается так:
c
= a^2; % возведение переменной a в квадрат
c = a^0.5; %
извлечение квадратного корня из переменной
a
Приоритет арифметических
операций * и / выше операций + и - , т.е. сначала
выполняется умножение и
c
= 7+2*2; % значение c = 28
c = (7+2)*2;
% значение с = 18
В практике программирования есть несколько устоявшихся подходов использования арифметических операций. Например, если необходимо увеличить значение переменной arg на 1, то этого можно добиться следующим образом:
arg = arg + 1;
При этом совершенно не важно чему равна переменная arg, в любом случае ее значение будет увеличено на 1. Аналогичным образом можно выполнять увеличение или уменьшение значения переменной на любую величину.
Другим устоявшимся приемом программирования является обмен значений между двумя переменными. Например, заданы переменные arg_a и arg_b и необходимо произвести обмен данными между ними. Это достигается следующим образом:
temp
= arg_a;
arg_a = arg_b;
arg_b = temp;
Здесь temp – это временная переменная, необходимая для сохранения значения переменной arg_a, т.к. оно затирается во второй строчке значением arg_b. Поэтому в третьей строке переменной arg_b присваивается сохраненное в temp значение переменной arg_a.
Если в результате выполнения вычислений появляется комплексное число, то MatLab автоматически будет оперировать с такими числами в соответствии с арифметикой комплексных чисел. Например, при извлечении квадратного корня из -1, получим следующий результат:
c = (-1)^0.5; % c = 0.0000 + 1.0000i
Здесь i – зарезервированное имя мнимой единицы и представленная запись обозначает комплексное число с нулевой действительной частью и единичной мнимой. В MatLab в качестве зарезервированного имени мнимой единицы также используется буква j.
Для того, чтобы задать комплексную переменную достаточно указать значения их действительной и мнимой частей как показано ниже
c = 6 + 5i; % комплексное число
и с заданными комплексными переменными
также можно выполнять
При работе с комплексными числами существуют две специальные функции:
real(x) – взятие действительной
части комплексного числа x;
imag(x) – взятие мнимой части комплексного
числа x;
abs(x) – вычисление абсолютного значения
комплексного числа x;
conj(x) – вычисление комплексно-сопряженного
числа x;
angle(x) – вычисление аргумента комплексного числа x;
MatLab содержит в себе
все распространенные
x
= 2;
y = 4;
d = sqrt(x^2+y^2);
%вычисление евклидового расстояния
Аналогичным образом вызываются и все другие математические функции, представленные в табл. 1.2.
Таблица 1.2. Основные математические функции MatLab
sqrt(x) |
вычисление квадратного корня |
exp(x) |
возведение в степень числа e |
pow2(x) |
возведение в степень числа 2 |
log(x) |
вычисление натурального логарифма |
log10(x) |
вычисление десятичного |
log2(x) |
вычисление логарифма по основанию 2 |
sin(x) |
синус угла x, заданного в радианах |
cos(x) |
косинус угла x, заданного в радианах |
tan(x) |
тангенс угла x, заданного в радианах |
cot(x) |
котангенс угла x, заданного в радианах |
asin(x) |
арксинус |
acos(x) |
арккосинус |
atan(x) |
арктангенс |
pi |
число пи |
round(x) |
округление до ближайшего целого |
fix(x) |
усечение дробной части числа |
floor(x) |
округление до меньшего целого |
ceil(x) |
округление до большего целого |
mod(x) |
остаток от деления с учётом знака |
sign(x) |
знак числа |
factor(x) |
разложение числа на простые множители |
isprime(x) |
истинно, если число простое |
rand |
генерация псевдослучайного числа
с равномерным законом |
randn |
генерация псевдослучайного числа с нормальным законом распределения |
abs(x) |
вычисление модуля числа |
Почти все элементарные функции допускают вычисления и с комплексными аргументами. Например:
res = sin(2+3i)*atan(4i)/(1 — 6i); % res = -1.8009 — 1.9190i
или
exp(i*x) = cos(x)+i*sin(x);
Ниже показан пример задания вектора с именем a, и содержащий значения 1, 2, 3, 4:
a = [1 2 3 4]; % вектор-строка
Для доступа к тому или иному элементу вектора используется следующая конструкция языка:
disp(
a(1) ); % отображение значения 1-го элемента
вектора
disp( a(2) );
% отображение значения 2-го элемента вектора
disp( a(3) );
% отображение значения 3-го элемента вектора
disp( a(4) );
% отображение значения 4-го элемента вектора
т.е. нужно указать имя вектора и в круглых скобках написать номер индекса элемента, с которым предполагается работать. Например, для изменения значения 2-го элемента массива на 10 достаточно записать
a(2) = 10; % изменение значения 2-го элемента на 10
Информация о работе Курс лекций по "Программированию и компьютерам"