Сайт о телевидении

Сайт о телевидении

» » В.Г.Потемкин. Введение в MATLAB. Переменные в среде MATLAB

В.Г.Потемкин. Введение в MATLAB. Переменные в среде MATLAB

Как и во всех языках программирования, в MatLab предусмотрена возможность работы с переменными. Причем пользователь не должен заботиться о том, какие значения будет принимать переменная (комплексные, вещественные или только целые). Для того чтобы присвоить, например, переменной z значение 1.45, достаточно написать в командной строке z = 1.45, при этом MatLab сразу же выведет значение z:

» z = 1.45
z =
1.4500

Здесь знак равенства используется в качестве оператора присваивания. Часто не очень удобно после каждого присваивания получать еще и результат. Поэтому в MatLab предусмотрена возможность завершать оператор присваивания точкой с запятой для подавления вывода результата в командное окно. Именем переменной может быть любая последовательность букв и цифр без пробела, начинающаяся с буквы. Строчные и прописные буквы различаются, например MZ и mz являются двумя разными переменными. Количество воспринимаемых MatLab символов в имени переменной составляет 31.
В качестве упражнения на использование переменных найдите значение следующего выражения:

Наберите последовательность команд, приведенную ниже (обратите внимание на точку с запятой в первых двух операторах присваивания для подавления вывода промежуточных значений на экран):

» х = sin(1.3*pi)/log(3.4);
» у = sqrt(tan(2.75)/tanh(2.75));
» z = (х+у)/(х-у)
Z =
0.0243 - 0.9997i

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

»(sin(1.3*pi)/log(3.4)+sqrt(tan(2.75)/tanh(2.75)))/…
(sin(1.3*pi)/log(3.4)-sqrt(tan(2.75)/tanh(2.75))) ans =
0.0243 - 0.9997i

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

Для ввода длинных формул или команд в командную строку следует поставить три точки (подряд, без пробелов), нажать клавишу и продолжить набор формулы на следующей строке. Так можно разместить выражение на нескольких строках. MatLab вычислит все выражение или выполнит команду после нажатия на в последней строке (в которой нет трех идущих подряд точек).

MatLab запоминает значения всех переменных, определенных во время сеанса работы. Если после ввода примера, приведенного выше, были проделаны еще какие-либо вычисления, и возникла необходимость вывести значение х , то следует просто набрать х в командной строке и нажать :

» x
-0.6611

Переменные, определенные выше, можно использовать и в других формулах. Например, если теперь необходимо вычислить выражение

,

то достаточно ввести следующую команду:

» (x-y)^(3/2)
ans =
-0.8139 + 0.3547i

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

» ехр(3.5)
ans =
33.1155

Другой способ состоит в использовании оператора присваивания:

» t = ехр(3.5)
t =
33.1155

Предположим, что часть вычислений с переменными выполнена, а остальные придется доделать во время следующего сеанса работы с MatLab. В этом случае понадобится сохранить переменные, определенные в рабочей среде.

Просмотр переменных

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

» who
Your variables are:
al a2 a3

Команда whos позволяет получить более подробную информацию о переменных в виде таблицы:

Grand total is 3 elements using 24 bytes

Первый столбик Name состоит из имен используемых переменных. То, что содержится в столбике Size, по существу, определяется основным принципом работы MatLab. Программа MatLab все данные представляет в виде массивов. Переменные al, a2 и а3 являются двумерными массивами размера один на один. Каждая из переменных занимает по восемь байтов, как указано в столбике Bytes. Наконец, в последнем столбике Class указан тип переменных - double array, т.е. массив, состоящий из чисел двойной точности. В строке под таблицей написано, что в итоге три элемента, т.е. переменные, занимают двадцать четыре байта. Оказывается, что представление всех данных в MatLab в виде массивов дает определенные преимущества.
Для освобождения из памяти всех переменных используется команда clear. Если в аргументах указать список переменных (через пробел), то только они будут освобождены из памяти, например:

» clear al аЗ
» who
Your variables are:
a2

Начиная с версии 6.0, появилось удобное средство для просмотра переменных рабочей среды - окно Workspace , для перехода к которому следует активизировать одноименную закладку. Данное окно содержит таблицу, аналогичную той, что выводится командой whos. Двойной щелчок по строке, соответствующей каждой переменной, приводит к отображению ее содержимого в отдельном окне, что особенно полезно при работе с массивами. Панель инструментов окна Workspace позволяет удалить лишние переменные, сохранить и открыть рабочую среду.

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

Обозначения системных переменных MATLAB

Комплексные числа

В системе MATLAB комплексные числа, тате же, как и вещественные, имеют тип double. Поэтому нет необходимости в отдельной маркировке, отмечающей работу с комплексными числами. Запись производится следующим образом: 3+7i; -7.1+0.831Е+2*i; 5-3j . Из примера видно, что для обозначения мнимой единицы можно использовать одну из букв: i или j. По умолчанию MATLAB использует букву i.

Ниже приведен пример вычисления корня квадратного из -1

>> b=sqrt(a)

Для комплексных чисел можно применять те же функции, что и для вещественных, кроме очевидных случаев, когда у функции не может быть комплексного аргумента. Например, функция rem (x,y) вычисляет остаток от деления x на у, поэтому использование в качестве ее аргумента комплексного числа приведет к ошибке:

>> a=2+3*i;

>> rem(a,3)

Error using ==> rem

Arguments must be real.

Наряду с этим, существует также ряд функций, применяемых только к комплексным переменным.

Функции комплексных переменных

Например:

>> abs(2+3i)

>> conj(2+3i)

2.0000 - 3.0000i

>> isreal(x)

В последнем примере функция isreal возвратила число 0, т.к. переменная x не является действительной.

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

Выбирая имя для переменной, руководствуйтесь следующими правилами.

■ Имя переменной может включать любое количество символов, однако запоминаются и идентифицируются только первые 63 символа (это число как максимально возможное число символов в имени переменной возвращает функция name lengthmax).

■ Имя переменной всегда должно начинаться с буквы и может содержать любые комбинации букв, цифр и символов подчеркивания (_).

■ Не допускается использовать в именах переменных пробелы и специальные символы (такие как+, -,*,/).

■ Имя переменной не должно совпадать с именами других переменных, функций, процедур и системных переменных MATLAB.

■ В именах переменных различаются строчные и прописные буквы (т.е. Abс и аВс - это разные имена).

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

isvarname имя_переменной

где имя_переменной - это имя переменной, в правильности которого вы хотите удостовериться. Данная функция возвращает значение 1, если имя является допустимым, и 0 в противном случае. Например, имя 12_abc_3 8 является некорректным, поскольку начинается с цифры, поэтому данная функция возвращает значение 0.

>> isvarname 12_abc_3 8

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

Ниже перечислены основные системные переменные MATLAB.

■ i , j - мнимая единица (корень квадратный из -1), используемая для задания мнимой части комплексных чисел.

■ pi - число π (π = 3.141592653589793).

■ eps - погрешность операций над числами с плавающей точкой, т.е. интервал между числом 1.0 и следующим ближайшим числом с плавающей запятой (равен 2.2204е-16,или 2 -52).

■ ans - результат последней операции без знака присваивания.

■ inf - обозначение машинной бесконечности.

■ NaN - сокращение от слов Not a Number (не число), принятое для обозначения неопределенного результата (например, 0/0 или Inf /Inf).

■ realmin - минимальное по модулю вещественное число (2 .22 51е-308, или 2 -1022).

■ realmax - максимальное по модулю вещественное число (1.7977е+3 08, или 2 1023).

В MATLAB, в отличие от прочих языков программирования, типы переменных заранее не декларируются. Достаточно присвоить переменной значение определенного типа. Например, чтобы присвоить переменной а значение 5, введите в командной строке выражение а =5 (в качестве оператора присваивания применяется знак равенства) и нажмите клавишу , после чего программа сразу же выдаст значение данной переменной.

>> а =5

Как видите, в этом случае программе MATLAB нет необходимости назначать для представления результата переменную ans, поскольку задана переменная а.

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

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

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

· clear – уничтожение всех переменных;

· clear x – уничтожение переменной х;

· clear a b c – уничтожение семейства переменных (аргументы команды clear следуют сразу после имени команды и разделяются пробелами).

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

Конец работы -

Эта тема принадлежит разделу:

Пециальные символы и их назначение

Язык общения с matlab.. символы и операторы языка.. операторы языка это символы операций над данными называемыми операндами в matlab применяются все общепринятые..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

5. Видимость имён переменных и имён функций.

Локальные и глобальные переменные. Функция располагает собственным, изолированным от рабочего пространства системы MATLAB, пространством переменных. Поэтому, если перед вызовом M-функции в командном окне MATLABа была определена переменная с именем, например, varName1, то нельзя рассчитывать на то, что переменная в теле функции с этим же именем уже имеет некоторое значение. Это совсем другая переменная (хотя у неё и то же самое имя varName1) и располагается она в памяти машины в другой области памяти.

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

Аналогично, локальные внутри некоторой функции переменные не видны внутри другой M-функции.

Одним из каналов передачи информации из командного окна системы MATLAB в M-функцию и из одной функции в другую является механизм параметров функции. Другим таким механизмом являются глобальные переменные.

Чтобы рабочая область системы MATLAB и несколько M-функций могли совместно использовать переменную с некоторым именем, её всюду нужно объявить как глобальную с помощью ключевого слова global. К примеру, переменная glVarS, участвующая в вычислениях в рабочем пространстве и в функции FuncWithGlobVar является одной и той же переменной (единственный участок памяти) повсюду - поэтому её можно использовать в функции без дополнительного присваивания её какого-либо значения:

Так как у глобальных переменных "глобальная" область действия, то чтобы случайно (по ошибке) не переопределить её где-либо, желательно давать таким переменным более мнемонические (более длинные и осмысленные) имена.

Теперь рассмотрим вопрос о видимости имён функций. Если мы сохранили функцию с некоторым именем в файле с этим же именем и расширением m, и кроме того если системе MATLAB известен путь к этому файлу на диске, то эту функцию можно вызывать как из командного окна, так и из других функций.

Однако в тексте M-функции можно поместить опеределения нескольких функций, причём только одна из них может совпадать по имени с именем файла. Именно эта функция и будет видна из командного окна и других функций. Все остальные функции будут внутренними - их могут вызывать только функции из того же файла.

Например, если в файле ManyFunc.m будет содержаться следующий текст

function ret1 = ManyFunc(x1, x2)

ret1 = x1 .* x2 + AnotherFunc(x1)

function ret2 = AnotherFunc(y)

ret2 = y .* y + 2 * y + 3;

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