Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тело файла с любыми выражениями




End

0 0 0 1 1

0 0 1 1 1

0 1 1 1 1

1 1 1 1 1

End

Операторы

Otherwise

Операторы

Операторы

End

Else

End

End

End

End

End

End

End

End x

или

x =[];

for i =1:n

x=[x,i.2 ];

x

создает определенный вектор размерности n, а оператор

 

x =[];

for i = n:1

x=[x,i.2 ];

x

создает вектор с теми же элементами, но размещенными в обратном порядке. Заметим, что матрица может быть пустой (например, в случае оператора x=[].)

Последовательность операторов

fori =1:m

forj =1:n

H(i,j)=1/(i+j-1);

H

 

создаст и напечатает на экране матрицу Гильберта размерности m × n. Точка с запятой, которая завершает внутренний оператор, предотвращает вывод на экран ненужных промежуточных результатов, в то время как последний оператор H выводит на экран окончательный результат.

Цикл while… end. В общем виде цикл while записывается в виде

while <условие>

<операторы>

<Операторы> будут повторяться до тех пор, пока <условие> будет оставаться истинным. Например, для заданного числа a приведенная далее последовательность операторов вычислит и выведет на дисплей наименьшее неотрицательное число n,такое что 2 n < a:

n=0;

while 2 ^n <a

n=n +1;

n

Условный оператор if… end. В общем виде простой оператор if используется следующим образом:

 

if <условие>

<операторы>

<Операторы> будут выполняться, только если <условие> истинно. Возможно также множественное ветвление, что демонстрируется приведенным далее примером.

 

if n <0

parity =0;

elseif rem(n,2)==0

parity =2;

parity =1;

 

При использовании двухвариантного условного оператора часть, связанная с elseif, конечно, не используется.

Оператор переключения case… end. При необходимости построить конструкцию ветвления с более чем двумя логическими условиями удобнее использовать не вложенные операторы if,а оператор переключения switch...case. Этот оператор имеет следующую структуру:

 

switch <выражение>

%<выражение>-это обязательно скаляр или строка

case <значение1>

%выполняется, если <выражение>=<значение1>

case <значение2>

%выполняется, если <выражение>=<значение2>

...

%выполняется, если <выражение>не совпало

%ни с одним значением

В Matlab используются следующие операторы отношения:

 

Обозначение Значение
< меньше чем
> больше чем
<= меньше или равно
>= больше или равно
== равно
~= не равно

 

Отметим, что знак « используется в операторах присваивания, в то время как знак «==» используется в операторах отношения.

Операторы отношения (или, другими словами, логические переменные, которые они создают) могут объединяться с помощью логических операторов:

Обозначение Значение
& И
| ИЛИ
~ НЕ

 

Когда эти операторы применяются к скалярам, то результатом является тоже скаляр 1 или 0 в зависимости от того, является ли результат истиной или ложью. Например,

 

3<5

ans = 1

3>5

ans = 0

 

Когда операторы отношения применяются к матрицам одного размера, результатом является матрица того же размера, у которой в качестве элементов стоят 0 или 1, в зависимости от соотношения между соответствующими элементами исходных матриц. Например,

a=rand(5); b=triu(a); a==b

ans =

0 0 0 0 1.

 

Операторы while и if интерпретируют отношение между матрицами как истинное в том случае, если результирующая матрица не имеет нулевых элементов.

Так, если необходимо выполнить оператор в том случае, когда матрицы A и B полностью совпадают, можно написать

 

if A ==B <операторы>end

 

но если необходимо выполнить оператор в том случае, когда матрицы A и B не равны, следует ввести

 

if any(any(A.=B))<оператор>end

или, что проще,

ifA ==Belse<оператор>end.

 

Заметим, что конструкция

 

ifA.=B<оператор>end

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

 

Функцияfind. Оператор k = find(x) возвращает вектор k номеров ненулевых элементов вектора/матрицы x. Если x – матрица, то при определении индексов она рассматривается как вектор, образованный последовательно соединенными столбцами матрицы. Вектор find(x) можно использовать совместно с операторами отношения, поскольку результатом применения оператора отношения к матрицам является матрица из 0 и 1 (ложь или истина). Таким образом, можно с помощью одного оператора find определить и записать сразу все индексы матрицы, удовлетворяющие некоторому условию. Если при этом вспомнить, что оператор цикла for допускает форму for k=KK, где KK – целый вектор, то удобно использовать их вместе. Например, если необходимо выполнить <оператор> только для тех элементов матрицы, которые больше

3,то удобно это сделать следующим образом:

 

for i=find(A>3)

<оператор>

 

При отладке выражений и программ в окне Редактора-отладчика сообщения об ошибках выдаются в командное окно MATLAB.

 

М-файлы бывают двух типов: сценарии (скрипты) и функции. Для их создания необходимо вызвать редактор m -файлов командой edit в командном окне либо последовательностью File→New→M-file из меню командного окна

M -файл-сценарий, называемый также Script -файлом, является простой записью серии команд без входных и выходных параметров. Он имеет следующую структуру:

 

%Основной комментарий

%Дополнительный комментарий

 

Особенности файлов-сценариев состоят в следующем:

–они не имеют входных и выходных аргументов;

–работают с данными из рабочей области;

–в процессе выполнения не компилируются;

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

Основным комментарием является первая строка текстовых комментариев, а дополнительным – последующие строки. Основной комментарий выводится при выполнении команд lookfor и help имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла.

Создание m -файла сценария производится путем копирования заданной последовательности команд из CommandWindow, размещением ее в окне редактора, вызываемом последовательностью File-New-BlankM-File и сохранением ее под некоторым именем.

Использование m -файла-сценария состоит в вызове его в заданное место CommandWindow для выполнения определяемых им действий.

 

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

 

function vаг = f_name(Список_параметров)

%Основной комментарий

%Дополнительный комментарий




Поделиться с друзьями:


Дата добавления: 2014-11-08; Просмотров: 544; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.034 сек.