Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Как осуществляется передача информации из командного окна Matlab в файл-функцию? То такое локальные, глобальные переменные? (В1Б17,В2Б6,В3Б16).



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

function noout(a, b), function [v, u]=noin, function noarg().

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

Параметрами файл-функций могут быть не только числа или скалярные переменные, но и массивы требуемых размеров. Поэтому желательно создавать векторизованные версии М-файлов вместо операторов < ^ >, < * >, < / > следует применять операторы <. ^ >, <.* >, <./ >. Векторизация осуществляется командой vectorize (см. разд. 1.7).

Созданный M-файл можно сохранить не только в текущем, но и в любом другом каталоге. В этом случае перед запуском M-файла на выполнение нужно установить пути поиска, ведущие к нему. По умолчанию текущим является подкаталог work основного каталога MATLAB. Для того, чтобы увидеть его содержимое, в главном меню MATLAB выберите команду View => Current Directory (Вид => Текущий каталог). В результате раскроется окно, в котором отобразится список файлов и вложенных папок активного в данный момент каталога.

Чтобы изменить текущий каталог, введите путь к новому каталогу в поле Current Directory либо выберите его в раскрывающемся списке этого поля. Или же щелкните на кнопке справа от от поля Current Directory, и отыщите нужную папку в раскрывшемся диалоговом окне Обзор папок.

Справочную информация по M-функциям можно получить, введя команду doc function.

 

Какие операции отношения и логические операции над числами определены в Matlab? Какова иерархия приоритетов в выполнении математических операций, операций отношений и логических операций? (В1Б16, В2Б22, В3Б6).

Операторы отношения служат для поэлементного сравнения двух операндов, в качестве которых могут выступать числа, векторы или матрицы. При этом сравниваемые векторы или матрицы должны иметь одинаковые размеры. Если операнды одинаковы, то программа возвращает 1 ( True – Истина), в противном случае 0 ( False – Ложь). Перечень операторов отношения с соответствующими им функциями представлен в таблице 4.1.

 

Таблица 4.1. Операторы отношения и их функции

Оператор Название Функция
== Равно Eq
~= Не равно Ne
< Меньше Lt
> Больше Gt
< = Меньше или равно Le
> = Больше или равно Ge

 

Операторы = = и ~= сравнивают действительные и комплексные переменные. При этом сравниваются действительные и комплексные части числа.

Операторы <, < =, >, > = при сравнении комплексных чисел сравнивают только действительные части числа.

Примеры приведены в табл. 4.2.

 

Таблица 4.2. Примеры использования операторов отношения

Выражение Функция Результат
> > 3==3 > > eq(3, 3) ans =
> > 5~=5 > > ne(5, 5) ans =
> > 4+2i==4+i > > eq(4+2i, 4+i) ans =
> > 7.2< 8.3 > > lt(7.2, 8.3) ans =
> > 1.4+5i< 1.5+i > > lt(1.4+5i, 1.5+i) ans =
> > 3< =2.33 > > le(3, 2.33) ans =

 

Если при вычислениях надо формально определить, является ли переменная x комплексной, можно вызвать функцию isreal(x), возвращающую 1 если x не является комплексной и 0 в противном случае.

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

В операторах отношения допустимо сравнение массива и числа. В этом случае происходит сравнение каждого элемента массива с числом.

Логические операторы предназначены для выполнения поэлементных логических операций над массивами одинаковых размеров. Логические операторы и соответствующие им функции приведены в табл. 4.3.

Таблица 4.3. Логические операторы и их функции

Оператор Название Функция
& Логическое И And
| Логическое ИЛИ Or
Отсутствует Исключающее ИЛИ Xor
~ Логическое НЕ Not

 

Первые три операции являются двухоперандными (бинарными), а операция < Не > является унарной (однооперандной).

При выполнении логических операций «истинными» считаются операнды, не равные нулю, а «ложными» – операнды, равные нулю. При этом результатом операции < И > будет 1, если оба операнда не равны нулю, и 0, если хотя бы один из операндов нулевой. Операция < ИЛИ > дает 1, если хотя бы один операнд не равен нулю. Операция < исключающее ИЛИ > выдает 1 лишь тогда, когда один из операндов равен нулю, а другой не равен, в остальных случаях она выдает 0. Операция < НЕ > выдает 1, если ее единственный операнд равен нулю, и 0 в противном случае.

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

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

Приоритеты операций системы MATLAB в порядке убывания приведены ниже:

1. Круглые скобки < ( ) >.

2. Транспонирование <.' >, транспонирование с комплексным сопряжением< ' >, возведение в степень < ^ >, поэлементное возведение в степень <.^ >.

3. Унарный плюс < +>, унарный минус < –>, логическое отрицание < ~>.

4. Умножение и деление (в том числе поэлементное) < * >, < / >, < \ >, <.* >, <./ >, <.\ >.

5. Сложение < +> и вычитание < –>.

6. Операции отношения <, < =, >, > =, ==, ~=.

7. Логическое И < & >.

8. Логическое ИЛИ < |>.

Отметим, что сначала выполняются операции над аргументами функций eq, ne, lt, gt, le, ge, and, or, not, если использовать их вместо соответствующих им операторов. Например, два выражения and(A, B)+F и A& B+F не эквивалентны.

Справку можно получить с помощью команды doc ops.

 

Как работают циклы for, while? (В1Б15, В2Б7, В3Б7, В3Б27).

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

for var = b1: b2: b3

Команды (текст программы)

End

Здесь var – переменная (счетчик) цикла, которая при каждом повторении цикла изменяется от начального значения b1 до конечного значения b3 с шагом b2 (если параметр b2 не указан, по умолчанию его значение принимается равным 1). Переменная цикла может принимать не только целые, но и вещественные значения с любым знаком. Команды в тексте программы разделяются запятой <, >, точкой с запятой <; > или нажатием клавиши < Enter>. Ввод команд завершается командой end. Цикл завершается, как только значение var превысит b3. Команды между for и end воспринимаются системой как части одной сложной команды. Поэтому нажатие клавиши < Enter> для перехода к следующей строке не приводит в данном случае к выполнению этих команд. Выполнение команд начинается только тогда, когда введена «закрывающая скобка» сложной команды в виде ключевого слова end.

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

Например, для поиска суммы элементов матрицы A, расположенных ниже главной диагонали, в файл-функции Sn следует использовать два цикла for, причем начальное значение счетчика внутреннего цикла зависит от текущего значения счетчика внешнего цикла:

function s=Sn(A)

[n m]=size(A);

s=0;

for j=1: m

for i=j+1: n

s=s+A(i, j);

end

end

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

Пример файл-функции polsum, которая находит сумму всех первых положительных элементов вектора:

function s=polsum(x)

s=0;

k=1;

while x(k)> 0

s=s+x(k);

k=k+1;

end

Вызовем файл-функцию polsum из командной строки:

> > a=[1 -2 3];

> > S=polsum(a)

S =

Файл-функция polsum имеет один недостаток: если все элементы вектора – положительные числа, то k становится больше длины вектора x, что приводит к ошибке, например:

> > a=[1 2 3];

> > S=polsum(a)

??? Index exceeds matrix dimensions.

Кроме проверки значения x(k), следует позаботиться о том, чтобы значение k не превосходило длины вектора x. Вход в цикл должен осуществляться только при одновременном выполнении условий k < = length(x) и x(k) > 0, т. е. необходимо применить логический оператор < И >, обозначаемый в MATLAB символом &. Заменим в файл-функции polsum условие цикла while x(k)> 0 на составное while k < = length(x)& x(k) > 0. Если первое из условий не выполняется, то второе условие проверяться не будет, именно поэтому выбран такой порядок операндов. Теперь файл-функция polsum будет работать верно для любых векторов:

> > a=[1 2 3];

> > S=polsum(a)

S =


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 478; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.035 с.)
Главная | Случайная страница | Обратная связь