Программа Matlab и ее использование

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

Среди новых программных возможностей следует отметить переработанный интерфейс, включающий новые программные и отладочные инструменты, автоматический анализ качества кода, а также возможность сохранения файла программы непосредственно в HTML- и Word- форматах. Новые интерактивные инструменты построения графиков обеспечивают более быстрое и удобное создание Matlab графиков, включая возможность генерации кода для повторного многократного создания графиков. 

Повышена надежность вычислений с числами двойной точности, а также осуществлена поддержка других типов данных: целочисленных и одинарной точности, а также вычислений с ними. Обработка новых типов данных без перевода их в числа двойной точности существенноповышает производительность и уменьшает объем используемой памяти. Это позволяет работать с большими массивами данных. Благодаря новым FFT алгоритмам скорость быстрых Фурье преобразований одинарной точности повышена в среднем на 20%. Кроме того, MATLAB теперь использует библиотеку целочисленных алгоритмов Intel MMX, что повышает скорость вычислений с целочисленными данными до 8 раз. 

Содержащийся в семействе продуктов MATLAB 7 компилятор MATLAB Compiler теперь поддерживает весь язык MATLAB,включая большинство приложений (MATLAB Toolboxes). Улучшенный компилятор MATLAB Compiler дает возможность инженерам распространять независимые приложения, разработанные в MATLAB, или включать их в такие средства разработки, как Excel, C, C++, и COM. В результате, инженеры и ученые теперь могут создавать значительно более широкий спектр MATLAB-приложений и более широко их распространять.

Основным типом данных, с которым производятся вычисления в среде MATLAB, являются конечные десятичные дроби, приближающие с заданной точностью произвольные вещественные числа. Последние в общем случае представимы лишь в виде бесконечных десятичных дробей. Можно сказать, что MATLAB работает с вещественными числами приближённо. Вещественное число задаётся в MATLABе мантиссой и показателем степени:



2.851038547e+12; -456.38456978; 0.0045692e0; 0.93185e-1; 4.5; -123 

и т.д.



У целых чисел отсутствуют дробные части, но они все равно представляются системой MATLAB на машинном уровне в той же форме, что и дробные числа. Этот основной тип данных называется double.

Именно этот тип данных подразумевается "по умолчанию" для любой переменной. Под мантиссу и показатель степени (на машинном уровне используется двоичная система записи чисел) отводится 8 байт памяти. В результате достигается точность представления десятичных чисел порядка 15 значащих цифр. При этом максимальным по модулю представимым в системе MATLAB вещественным числом является



1.797693134862316e+308 



а минимальным по модулю является следующее вещественное число:



2.225073858507202e-308 


Для этих чисел даже зарезервированы имена: realmax и realmin.

После запуска среды MATLAB в её командном окне появляется знак приглашения >>,







после которого можно вводить с клавиатуры числа, имена переменных, знаки операций (в частности, знак = соответствует операции присваивания), что в совокупности составляет некоторое выражение. Имена переменных начинаются с буквы и состоят из букв, цифр и знаков подчёркивания. MATLAB распознаёт в именах переменных до 31 символа (остальные игнорирует) и различает регистр символов. Нажатие клавиши Enter заставляет систему MATLAB вычислить значение выражения и показать результат, как это показано на рисунке.

Чтобы не перегружать излишними подробностями своё командное окно, MATLAB по умолчанию использует формат short для вывода вещественных чисел, при котором показываются только четыре десятичные цифры после запятой. Если требуется полное представление, то нужно ввести с клавиатуры команду format long после чего набрать имя переменной res, в которой записан результат вычислений. Нажав клавишу ENTER, получим более подробную информацию:



res = 

-93.29900636942675 


Теперь все результаты вычислений будут показываться с такой высокой точностью в течение данного сеанса работы MATLABа. Если требуется до прекращения текущего сеанса работы вернуться к старой точности визуального представления вещественных чисел в командном окне MATLABа, нужно ввести и исполнить (нажав клавишу ENTER) команду format short 

Другим интересным форматом является показ вещественных чисел в виде обыкновенных дробей, для чего вводится команда format rat 

Ранее вычисленная переменная res, будет показана в следующем виде:



res = 

-9050/97 



Ну и, наконец, если операнды и результаты вычислений являются целыми, то хотя они и представляются в памяти машины так же, как и дробные числа, визуально в командном окне MATLABа они показываются в виде целых чисел. Это иллюстрируется следующим рисунком,







на котором специальным именем ans обозначен (это стандартное обозначение) результат вычисления выражения, если он не был присвоен какой-либо переменной с другим именем

Над вещественными числами производятся арифметические операции сложения, вычитания, умножения и деления, для которых используются знаки +, -, * и /. Кроме того, есть ещё операция возведения в степень, обозначаемая значком ^. Результаты применения этой операции показаны ниже:



5 ^ 2 

ans = 

25 

или

t = ans ^ (0.5) 

t = 

5 



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

Помимо арифметических операций используются ещё операции отношения и логические операции.

Операции отношения сравнивают между собой два операнда по величине. Эти операции записываются следующими знаками или комбинациями знаков:





<

Меньше 



<=

Меньше или равно 



>

Больше 



>=

Больше или равно 



==

Равно 



~=

Не равно 





Здесь выражение a вырабатывает единицу в силу того, что величина переменной a действительно меньше величины переменной b (истина).

Выражение c ~= b является истинным, так как на самом деле c, равное 3, не равно b, которое равно двум. В итоге оно вырабатывает значение 1.

Последнее выражение, b == a, не является истинным и вырабатывает 0.

В результате переменная res, равная сумме значений этих трёх выражений, оказывается равной двум.

Операции отношения имеют более низкий приоритет по отношению к арифметическим операциям, поэтому рассмотренная выше переменная res равна сумме значений трёх операций отношения только потому, что мы заключили эти операции в круглые скобки. Очень важно всегда помнить об этом, так как отсутствие круглых скобок может привести к изменению результата. Например, если a=1, b=1, c=3, то выражение



c + (b == a) 



равно 4, в то время как выражение без круглых скобок



c + b == a 



равно 0.

Теперь обратим внимание на роль точки с запятой в системе MATLAB. Точка с запятой может использоваться для разных целей. Когда мы вводим с клавиатуры некоторое выражение (оно расположено после знака приглашения >>) и нажимаем клавишу ENTER, то MATLAB прозводит вычисление этого выражения и выводит результат в своё командное окно. Если мы не хотим тотчас же видеть результат вычислений (это характерно, например, для промежуточных результатов), то в конце введённого выражения следует поставить точку с запятой, и только после этого нажать ENTER.

Кроме того, если мы хотим за один раз, то есть одним нажатием клавиши ENTER вычислить несколько разных выражений, а их значения присвоить разным переменным, то эти выражения следует отделить друг от друга точкой с запятой, как это и показано на предыдущем изображении командного окна системы MATLAB.

Последней группой операций являются логические операции, перечисленные в следующей таблице:





&

И 



|

ИЛИ 



~

НЕ 



Логические операции трактуют свои операнды как "истинные" (не равные нулю) или "ложные" (равные нулю). Если оба операнда операции "И" истинны (не равны нулю), то результат этой операции равен 1 ("истина"); во всех остальных случаях операция "И" вырабатывает значение 0 (ложь). Операция "ИЛИ" вырабатывает 0 (ложь) только в случае, когда являются ложными (равными нулю) оба операнда. Наконец, операция "НЕ" инвертирует "ложь" на "истину" и наоборот. То есть, если её операндом является ненулевое число, то эта операция вырабатывает 0, а если операнд нулевой, то тогда результатом применения операции "НЕ" будет единица.

Логические операции имеют самый низший приоритет.

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

Когда Вы запускаете MATLAB и начинаете производить вычисления, в командном окне показываются вводимые с клавиатуры числа, переменные (через их имена), результаты вычислений. Обычно вычисления повторяются вновь и вновь: вводятся с клавиатуры новые числовые данные и новые символьные выражения. В результате в окне MATLABа не хватает свободного места и производится "скроллирование" ("протяжка"; "прокрутка") — все строки сдвигаются на одну позицию вверх, так что самая верхняя строка покидает область видимости, а в самом низу окна появляется свободная строка для ввода новых данных. Естественно, эта строка содержит знак приглашения >>.

Та информация, что покинула видимую часть окна, никуда не исчезает. Её всегда можно просмотреть снова, если осуществить прокрутку содержимого окна стандартным графическим средством управления — полосой прокрутки (по английски — Scrollbar). Для этого нужно щелкнуть мышью на этой полосе, или протащить с помощью мыши ползунок полосы прокрутки в нужном направлении (вверх или вниз).

Можно также осуществлять прокрутку содержимого командного окна системы MATLAB с помощью следующих клавиш клавиатуры: PageUp, PageDown, Ctrl+Home (одновременное нажатие клавиш Ctrl и Home) и Ctrl+End.

Клавиши "Стрелка вверх" и "Стрелка вниз", в любом текстовом редакторе осуществляющие перемещение курсора вверх-вниз и прокрутку содержимого окна, в системе MATLAB работают по-другому. Эти клавиши позволяют вернуть в строку ввода ранее введённые с клавиатуры команды и другую входную информацию, то есть вся эта информация запоминается в специальной области памяти. Эту область памяти называют стеком команд, так самая последняя входная информация при её прокрутке клавишой "Стрелка вверх" появится первой. Затем появится предпоследняя команда и так далее. Клавиша "Стрелка вниз" осуществляет прокрутку команд в противоположном направлении.

В итоге можно сказать, что вся видимая информация в окне системы MATLAB располагается в двух принципиально разных зонах: зоне просмотра и зоне редактирования.







В зоне просмотра уже ничего нельзя исправить, хотя в неё и можно поместить курсор, однако реакцией на ввод с клавиатуры будет автоматическое перемещение курсора (то есть точки ввода) в строку ввода, расположенную в зоне редактирования. В зоне просмотра можно выделять (селектировать) с помощью мыши любую информацию и копировать её в Буфер обмена операционной системы Windows (то есть в Clipboard), чтобы потом вставить её либо в документ текстового редактора (например, редактора Word), либо опять-таки в строку ввода.

Зона редактирования обычно занимает одну (последнюю) строку командного окна системы MATLAB, в которой показан знак приглащения >>. Её мы и называем строкой ввода. Однако при необходимости эту логическую "строку" можно распространить на несколько физических строк командного окна MATLABа. Для этого нельзя просто нажать клавишу ENTER, так как при этом ввод информации будет закончен и MATLAB приступит к вычислениям и дальнейшему показу результата. Поэтому для продления ввода с показом вводимой информации на следующих физических строках требуется нажать ENTER только после трёх или более точек, что и показано на рисунке.







Однако и в этом случае зона редактирования распространяется только на самую последнюю строку (теперь она уже не содержит знак приглашения >>), а в предыдущих физических строках логической строки ввода изменить уже ничего нельзя. Логическая строка ввода не может содержать более 256 символов.

Все значения переменных, вычисленные в течение текущего сеанса работы системы MATLAB, сохраняются в специальной области памяти компьютера, называемой Рабочим пространством (английскийское название — Workspace). Можно стереть командой clc 

всё видимое содержимое окна системы MATLAB, однако это не затронет содержимого Рабочего пространства. Действительно, если после этого набрать имя ранее вычисленной переменной a, то после нажатия клавиши ENETR мы снова увидим её значение:



>>a 

a = 

20 



То, что MATLAB автоматически сохраняет все предыдущие результаты (а также команды), является большим удобством. Однако тут могут обнаружиться и неприятности, если объём запомненной информации станет слишком большим (в дальнейшем мы увидим, что MATLAB может работать с данными гигантских размеров). Если Вам уже не требуется хранить некоторые переменные в данном сеансе работы, их можно стереть из памяти машины командой clear имя1 имя2 … 

удаляющей из Рабочего пространства переменные с именами имя1 и имя2. Чтобы удалить сразу все переменные, нужно использовать команду clear 

Если Вы не знаете или сомневаетесь, какие переменные остались в Рабочем пространстве, Вы всегда можете выполнить команду who которая выведет список всех переменных, входящих на данный момент в Рабочее пространтсво системы MATLAB (смотри следующий рисунок).







Для просмотра значения любой переменной из текущего Рабочего пространства достаточно набрать её имя и нажать клавишу ENTER.






После закрытия сеанса работы MATLABа все переменные, вычисленные в течение сеанса, теряются. Однако их можно сохранить для последующего использования в иных сеансах, сохранив содержимое Рабочего пространтсва в файле на диске командой меню File | Save Workspace As… после чего появляется стандартное диалоговое окно операционной системы Windows для выбора каталога на диске и имени файла. Расширение имени файла должно быть mat. Такие файлы будем называть MAT-файлами.

Вместо команды меню можно набрать команду save путь_к_файлу\имя_MAT-файла непосредственно в командном окне MATLABа.

В новых сеансах системы MATLAB вы можете восстановить ранее сохранённое на диске Рабочее пространство командой меню File | Load Workspace… после которой Вы в стандартном диалоговом окне указываете нужный MAT-файл.

Более того, выполнив эту команду несколько раз с разными файлами, мы можем соединить в текущем Рабочем пространстве системы MATLAB содержимое нескольких предыдущих сеансов работы! Однако, если имена переменных из разных сеансов совпадают, то в текущем Рабочем пространстве будет представлена лишь переменная из последнего открытого MAT-файла.

Вместо команды меню можно набрать команду load имя_MAT-файла непосредственно в командном окне MATLABа. Можно также из записанного на диске MAT-файла считать в Рабочее пространство значения отдельных переменных. Для этого нужно выполнить команду load имя_MAT-файла имя1, имя2, … В результате из указанного MAT-файла будут считаны переменные с именами имя1, имя2 и т. д. При этом, если MAT-файл указан без полного пути к нему, то он должен находиться в текущем каталоге системы MATLAB, который всегда можно узнать с помощью команды cd 

Изменить текущий каталог можно командой cd путь_к_новому_каталогу