Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка_курсовик_ИНФО_2010

.pdf
Скачиваний:
16
Добавлен:
09.02.2015
Размер:
1.4 Mб
Скачать

1.1.3. Контекстное меню и панели инструментов

В некоторых случаях удобнее выполнять команды не из главного, а из контекстного меню или пользоваться кнопками панелей инструментов. Контекстное меню вызывается щелчком правой кнопки мыши и содержит для каждого окна набор наиболее актуальных для него команд. Так, в Command Window в контекстном меню собраны команды работы с буфером обмена: копирование и вставка, а также команды пересчета выделенных выражений, очистки окна и получения подсказки, в окне рабочей области - команды сортировки существующих в памяти объектов и создания новых. В окне Current Directory – команды открытия и выполнения m-файлов, создания новых файлов, папок и так далее.

Рис. 1.5. Контекстные меню различных окон MATLAB

Наиболее часто употребляемые команды MATLAB вынесены на панель инструментов в главном окне. Это в основном команды создания новых файлов и команды доступа к ним, например, вызов справки и стандартные кнопки редактирования Windows. Следует также отметить окно отображения и смены текущей папки. Сменить текущую папку можно несколькими способами, но удобнее всего сделать это именно из панелей инструментов с помощью кнопки Обзор , вызывающей стандартное для Windows окно выбора папки, особенно если требуется перейти на другой логический диск. В окне рабочей области и в окне текущей папки есть кроме того дополнительные панели инструментов, в которые включены команды, характерные для работы в данном окне и доступные только из него

.

11

Основные объекты MATLAB

1.1.4. Математические выражения, числа

Основным понятием математической системы является математическое выражение. Математическое выражение задает то, что должно быть вычислено в численном или символьном виде. Математические выражения строятся на основе чисел, констант, переменных, операторов, функций и разных спецзнаков. Число – простейший объект языка MATLAB, представляющий количественный данные. Числа могут быть целыми, дробными, с фиксированной и плавающей точкой. Возможно представление чисел в научном формате, т.е. с указанием мантиссы и порядка числа. Числа могут быть комплексными, такие числа содержат действительную и мнимую части. Мнимая часть имеет множитель i или j, означающий корень квадратный из – 1. Функция real возвращает действительную часть комплексного числа, а функция imag – мнимую. Для получения модуля комплексного числа используется функция abs (z) а для вычисления фазы – angle (Z) (обратите внимание на то, что регистр аргумента Z в обоих случаях разный). По умолчанию в MATLAB все операции над числами выполняются в формате с двойной разрядностью. Так, присваивая х значение 2+2, мы определяем переменную х типа double (двойная разрядность). Обратите внимание на описание типа переменной х в колонке Class в окне рабочей области

Workspace.

Рис. 1.5. Автоматическое задание типа double переменной x

Такой формат удовлетворяет подавляющему большинству требований к численным расчетам, но приводит к потерям лишнего времени на вычисление, в случае, например, выполнения операций с заведомо целыми чис-

12

лами. Поэтому в новых версиях MATLAB появилась возможность явно задавать тип величин, отличных от типа с двойной точностью. Для этого имеется целый ряд специальных функций, например, в случае приведения правой части выражения к шестнадцатиразрядному целому типу, определяемая переменная также будет целой. Можно убедиться в этом с помощью окна просмотра рабочей области.

Приведение к более простому типу может существенно повысить быстродействие системы в случае выполнения большого объема вычислений. В заключение заметим, что для выполнения символьных вычислений, то есть вычислений с абсолютной точностью, ни один из указанных форматов не подходит. Символьные вычисления MATLAB может выполнять с помощью специального пакета расширений Symbolic Math Toolbox (рис. 1.5).

Рис. 1.6. Явное задание типа величины x как целого числа

1.1.5. Переменные и константы

Переменные – это имеющие имена объекты, способные хранить некоторые данные. Переменные могут быть числовыми, символьными, векторными и матричными. Переменным можно задавать определенные значения с помощью использования операций присваивания, определяемых знаком =. Типы переменных предварительно не декларируется. Они определяются выражением, значение которого присваивается переменной. Если это выражение, вектор или матрица, то переменная будет векторной или матричной. Имя переменной, или, иначе говоря, ее идентификатор может содержать сколько угодно символов, но воспринимается только 31 начальный символ. Имя переменной не должно совпадать с именами других переменных, функций и процедур системы. Имя должно начинаться с буквы и может содержать буквы, цифры и символ подчеркивания(light_speed=3e+8). Пере-

13

менные могут быть обычными и индексированными, т. е. быть элементами векторов или матриц, могут использоваться и символьные переменные, при этом символьное значение заключается в апострофы (x=’Name’). Константа

– это предварительно определенное числовое или символьное значение, представленное уникальным именем. Символьные константы представляют собой цепочки символов, заключенных в кавычки, числа являются безымянными числовыми константами. Остальные константы в MATLAB принято называть системными переменными. Системные переменные задаются системой при загрузке и могут переопределяться в течение сеанса работы.

Основные системные и переменные системы MATLAB включают в се-

бя:

- i или j – мнимая единица, 1 ; pi - число (3.1416);

eps - погрешность операций над числами с плавающей точкой;

realmin и realmax – наименьшие и наибольшие возможные числа с плавающей точкой;

inf – представление положительной машинной бесконечности. Бесконечность следует из операций, подобных делению на нуль;

ans – переменная, хранящая результат последней операции;

NaN - Not-a-Number – указание на нечисловой характер данных, или неопределенность.

Как отмечалось, системные переменные могут переопределяться. Можно задать системной переменной иное значение, например, задать новое значение погрешности вычислений. Однако необходимо быть внимательным. Так, использование переменных i и j в качестве индексов в циклах может привести впоследствии к путанице в операциях с комплексными числами. Если в апострофы помещено математическое выражение, то оно не вычисляется и рассматривается просто как цепочка символов. Однако с помощью специальных функций преобразования символьные выражения могут быть преобразованы в вычисляемые. В памяти компьютера переменные занимают определенное место, называемое рабочей областью. Для очистки рабочей области используется функция clear в разных формах. Вызов функции без параметров приводит к уничтожению определений всех переменных. Если в качестве параметров заданы имена переменных, будут уничтожены определения только этих переменных. Уничтоженная переменная становится неопределенной. Попытка использовать неопределенную переменную приведет к выдаче сообщения об ошибке Undefined function or variable ‘x’ (Неопределенная функция или переменная 'x'):

14

>>x=4

x = 4

>>x+4 ans = 8

>>clear x

>>x+4

???Undefined function or variable 'x'.

1.1.6.Векторы, матрицы, массивы

MATLAB – программная среда специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами. При этом по умолчанию предполагается, что каждая заданная переменная это вектор, матрица, или массив. Например, если задано выражение х=1, то это значит, что х – это вектор с единственным элементом, имеющим значение 1. Если надо задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках и разделяя пробелами. Например, команда V=[1 2 3] задает вектор V, имеющий три элемента со значениями 1, 2 и 3. Задание матрицы требует указания нескольких строк. Для разграничения строк используется знак ;

>> M=[1 2 3; 4 5 6; 7 8 9] M =

1 2 3

4 5 6

7 8 9

Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции.

>> V = [sqrt(-1)*2 exp(0) sin(pi)] V =

0 + 2.0000i 1.0000 0.0000

В MATLAB двумерный массив является частным случаем многомерного массива. Многомерные массивы характеризуются размерностью более двух. Размерность массива это число измерений в пространственном представлении массива. Фактически многомерный массив представляет собой упорядоченный набор равных между собой по количеству строк и столбцов массивов на единицу меньшей размерности. Для задания многомерных массивов используется оператор ":". С помощью этого оператора повышается размерность массива. Элементами массива в MATLAB могут быть и

15

более сложные типы данных, например, структуры, которые могут содержать разнородные данные, относящиеся к некоторому объекту. Массивы структур находят самое широкое применение. Например, используются для представления цветных изображений. В каждом элементе такого массива содержится структура, объединяющая данные обо всех составляющих цвета одной точки. Ещѐ более сложные структуры нужны для разработки баз данных. MATLAB предоставляет возможность быстро и эффективно выполнять операции поиска и сортировки информации, сложную обработку массивов изображений и другие операции. В последних версиях MATLAB возможен прямой обмен данными между массивами структур и множеством записей различных баз данных с помощью пакте расширения Database ToolBox. Наиболее сложный тип данных в системе MATLAB это массив, элементами которого являются ячейки, содержащие любые типы массивов, включая массивы ячеек. Содержимое ячеек задается в фигурных скобках. Создавать массивы ячеек можно, например, с помощью присваивания данных отдельным ячейкам:

>>a(1,1)={1}

a =

>>a(2,2)={'hello'}

a =

[1][ ]

[ ] 'hello'

>> a(2,1)={[1 2 3]} a =

[ 1] [ ]

[1x3 double] 'hello'

Обратите внимание на представление последней заданной ячейки. Здесь выводится только информация о структуре помещенного в ячейку массива. Для детального отображения всей информации используется специальная функция cellplot. Для вывода содержимого массива ячеек используется команда celldisp:

>> celldisp (a) a{1,1} =

1 a{2,1} = 1 2 3 a{1,2} =

16

[ ] a{2,2} = hello

Кроме того, для создания массива ячеек может использоваться функция cell, которая создает пассив пустых ячеек заданного размера. Образовавшиеся пустые ячейки можно заполнить, используя операции присваивания.

>> C=cell(2,3) C =

[ ] [ ] [ ] [ ] [ ] [ ]

1.1.7. Комментарии

Поскольку MATLAB используется для достаточно сложных вычислений, важное значение имеют средства документирования программных текстов. Одним из таких инструментов является текстовый комментарий. Текстовые комментарии вводятся после символа %.

Как правило, первые строки m-файла с программным текстом используются для описания назначения этого файла. Для того, используются комментарии. Чтобы вывести эти комментарии на экран, необходимо набрать команду Help {имя файла}. После этого на экран будет выведен листинг всех комментариев вплоть до первого выполняемого оператора. В текстовых комментариях и в символьных константах могут использоваться буквы русского алфавита.

Основные операции MATLAB 1.1.8. Операторы и функции

Операторы это специальные обозначения для определенной операции над данными. Простейшими арифметическими операторами являются операторы сложения, вычитания, умножения и деления. Операторы используются совместно с операндами, например в выражении 2+3 символ + является оператором сложения, а числа 2 и 3 – операндами. В MATLAB большинство операторов относятся к матричным операциям. Например, операторы умножения и деления вычисляют произведение и частное от деления двух многомерных массивов, векторов или матриц. Для выполнения поэлементных операций над векторами или матрицами существуют специальные операторы, отличающиеся от матричных точкой перед знаком операции.

Покажем это на примере:

17

>>A=[1 2;3 4] A =

1 2

3 4

>>B=[2 0; 0 2] B =

2 0

0 2

>>A*B

ans = 2 4 6 8

>> A.*B ans = 2 0 0 8

Здесь матричный оператор обозначен символом *, что соответствует произведению матриц, а оператор из двух символов .* задает поэлементное умножение соответствующих матриц А и В. Сравните результат матричного умножения и поэлементного умножения матриц. Аналогично для операторов отношения >, <, = в системе MATLAB операндами могут быть не только числа, но и векторы, матрицы, массивы и символьные выражения. Полный список операторов можно получить, используя команду Help ops.

Функции имеют уникальные имена, выполняют определенные преобразования своих аргументов и возвращают результаты этих преобразований. Результат вычисления функции с одним выходным параметром подставляется на место ее вызова. Это позволяет использовать функции в математических выражениях.

Функции в общем случае имеют список аргументов или входных параметров, заключенных в круглые скобки. Функция может возвращать несколько значений, в этом случае результат ее вычисления должен быть присвоен вектору или массиву переменных. Функции бывают встроенными и внешними или m-функциями. Так, встроенными являются наиболее распространенные элементарные функции, например sin или exp, тогда как функция sinh является внешней функцией. Внешние функции содержат свои определения в m-файлах, а встроенные хранятся в откомпилированном ядре системы MATLAB, поэтому выполняются предельно быстро.

Каждый оператор имеет аналогичную по назначению функцию, напри-

18

мер, оператору матричного умножения * соответствует функция mtimes. В математических выражениях операторы имеют определенный приоритет исполнения, например в MATLAB приоритет логических операторов выше, чем арифметических, приоритет умножения и деления выше приоритета сложения и вычитания, и так далее. Для изменения приоритета операций в математических выражениях используются круглые скобки. Степень вложения скобок не ограничивается.

Со списком элементарных функций можно ознакомиться, выполнив команду Help elfun. Это наиболее известный класс математических функций. Сюда входят алгебраические, арифметические, тригонометрические и гиперболические функции, функции округления и определения знака. Необходимо помнить, что в тригонометрических функциях углы измеряются в радианах. Список специальных функций можно получить с помощью команды Help specfun. В этот список входят такие функции как функция Бесселя, бета- и гамма-функции, показательная функция, построение полинома Лежандра и так далее. В MATLAB существует также достаточно большой набор функций для работы с датой и временем, а также с символьными строками. Например, функция caledar возвращает матрицу размером 6х7, содержащую календарь на текущий месяц. Функция clock возвращает вектор из 6 элементов, содержащих текущее время в виде списка – год, месяц, день, час, минуты, секунды. Функции tic и toc запускают таймер и выводят время, прошедшее с момента запуска. Функции работы с символьными строками будут рассмотрены позже.

1.1.9. Операции с векторами и матрицами

В операциях с векторами и матрицами важную роль играет оператор :. Он используется для формирования упорядоченных числовых последовательностей. Таки последовательности нужны, например, для создания векторов или для задания значения абсциссы при построении графиков. Выражение с оператором : могут также использоваться в качестве аргументов функций для получения их множественных значений. Следующее выражение описывает возрастающую последовательность чисел с заданным шагом:

>> 1:2:11 ans =

1 3 5 7 9 11

Здесь первый операнд – 1, задает начальное значение последовательности. Второй – 2, шаг приращения. И третий – 11 – конечное значение последовательности. Если шаг не задан, то он принимает значение 1. Если

19

конечное значение указано меньшим, чем начальное, будет выдано сообщение об ошибке. Кроме того, специальным образом используется в некоторых операциях с матрицами. Символы [ ] используются для формирования векторов и матриц. Элементы вектора разделяются пробелами, а строки матрицы точками с запятой. Определим, например, матрицу А размером 3х4, то есть имеющую три строки и четыре столбца:

>> A=[1 2 3; 4 5 6; 7 8 9] A =

1 2 3

4 5 6

7 8 9

Приведем несколько примеров возможных функций. Сохранение пустой матрицы в В:

>> B = [ ] B =

[ ]

Удаление строки с номером 2 из матрицы А:

>> A(2,:) = [ ] A =

1 2 3

7 8 9

Обратите внимание на использование символа : в этой операции. Символ : используется для указания на целую строку, а удаление производится как присвоение пустого значения этой строке.

Удаление столбца с номером 2 из матрицы А:

>> A(:,2) = [ ] A =

1 3

7 9

Транспонирование матрицы А (для комплексных матриц одновременно выполняется комплексное сопряжение):

>> B=A' B =

1 7

3 9

Строки транспонированной матрицы соответствуют столбцам исходной матрицы. Для того, чтобы комплексное сопряжение не выполнялось, надо

20