русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Статус переменных и команда global.


Дата добавления: 2013-12-23; просмотров: 3391; Нарушение авторских прав


Работа с файлами в MatLAB. Лазарев стр. 87.

Функции обработки множеств.

Множество – совокупность некоторых объектов. В MatLAB множества можно представлять в виде векторов и применять к ним специальные встроенные функции (пересечение множеств, разность множеств и т.п.).

 

Окно редактора файлов MatLAB появляется на экране после вызова команды M-file из подменю New, или выбрано название одного из существующих М-файлов при вызове команды Open M-file из меню File.

В языке MatLAB имеются программы двух типов: так называемые Script-файлы (файл-сценарии, или управляющие программы) и файл-функции (процедуры). Все программы должны иметь расширение имен файлов .m, т.е. их нельзя различить по типу файла. При помощи Script-файлов оформляются основные программы, управляющие от начала до конца организацией всего вычислительного процесса, и отдельные части основных программ (они могут быть записаны в виде отдельных Script-файлов). Как файл-функции оформляются отдельные процедуры и функции (т.е. такие части программы, которые рассчитаны на неоднократное использование Script -файлами или другими процедурами при изменяемых значениях входных параметров и не могут быть выполнены без предварительного задания значений переменных, которые называют входными).

Главным внешним отличием текстов этих двух видов файлов является то, что файл-функции имеют первую строку вида:

function [<ПКВ>]=<имя процедуры>(<ПВВ>)

где ПКВ — Перечень Конечных Величин, ПВВ — Перечень Входных Величин (список_параметров). Script -файлы такой строки не имеют.

Принципиальное отличие заключается в совершенно разном восприятии системой имен переменных в этих файлах.

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



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

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

Основные особенности оформления М-файлов (сценариев и функций):

В дальнейшем под М-файлом будем понимать любой файл (файл-функцию или Script-файл), записанный на языке системы.

Основные особенности записи текста программы (М-файла) на языке MatLAB.

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

· Можно размещать несколько операторов в одной строке. Тогда предыдущий оператор этой строки должен заканчиваться символом ";" или ",".

· Длинный оператор можно записывать в несколько строк. При этом предыдущая строка оператора должна заканчиваться трем точками (...).

· Если очередной оператор не заканчивается символом ";", результат его действия при выполнении программы будет выведен в командное окно.

· Строка программы, начинающаяся с символа "%", не выполняется. Эта строка воспринимается системой как комментарий

· Строки комментария, предшествующие первому выполняемому оператору программы, т.е. такому, который не является комментарием, воспринимаются системой как описание программы.

· В программах на языке MatLAB отсутствует оператор окончания текста программы.

· В языке MatLAB переменные не описываются и не объявляются. Любое новое имя, появляющееся в тексте программы, воспринимается системой MatLAB как имя матрицы. Размер этой матрицы устанавливается при предварительном вводе значений ее элементов, либо определяется действиями по установлению значений ее элементов, описанными в предыдущем операторе или процедуре. Эта особенность делает язык MatLAB очень простым в употреблении и привлекательным. В языке MatLAB невозможно использование матрицы или переменной, в которой предварительно не введены или не вычислены значения ее элементов (а значит, и не определены размеры этой матрицы). В этом случае при выполнении программы MatLAB появится сообщение об ошибке "Переменная не определена".

· Имена переменных могут содержать лишь буквы латинского алфавита или цифры и должны начинаться с буквы. Общее число символов в имени может достигать 19, В именах переменных могут использоваться как прописные, так и строчные буквы. Особенностью языка MatLAB является то, что прописные и строчные буквы в именах различаются системой. Например, символы "а" и "А" могут использоваться в одной программе для обозначения разных величин.

Создание простейших файлов-функций (процедур)

Общие требования. Файл-функция (процедура) должна начинаться со строки заголовка:

function[<ПКВ>]=<имя_процедуры> (<ПВВ>)

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

function <имя_переменной>=<имя_процедуры> (<ПВВ>)

Если же в результате выполнения файла-функции должны быть вычислены несколько объектов, то первая строка будет иметь вид:

function[y1, y2,…yN]= <имя_процедуры> (<ПВВ>)

Т.е. перечень входных величин, должен быть представлен как вектор-строка с элементами y1, y2,…yN (все они могут быть матрицами).

 

Структура М-файла-функции (Дьяконов стр 503)

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

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

· он начинается с объявления function, после которого указывается имя переменной — выходного параметра, имя самой функции и список ее входных параметров;

· функция возвращает свое значение и может использоваться в виде имя_процедуры(спи-сок_параметров) в математических выражениях;

· все переменные, имеющиеся в теле файла-функции, являются локальными, т. е. действуют только в пределах тела функции;

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

· правила вывода комментариев те же, что у файлов-сценариев;

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

Последняя конструкция vаr=выражение вводится, если требуется, чтобы функция возвращала результат вычислений..

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

[vаг1,vа2,...]=имя_процедуры(список_параметров)

После его применения переменные выхода vаг1, vаг2,... становятся определенными и их можно использовать в последующих математических выражениях и иных сегментах программы. Если функция используется в виде имя_процедуры(список_параметров), то возвращается значение только первого выходного параметра — переменной var1.

 

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

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

Команда global vаг1 vаг2... позволяет объявить переменные модуля-функции глобальными. Таким образом, внутри функции могут использоваться и такие переменные, если это нужно по условиям решения вашей задачи.

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

 

Операторы управления вычислительным процессом (Лазарев, стр 77)

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

В языке MatLAB отсутствует оператор безусловного перехода, т.к. система ориентирована на структурное (модульное) программирование, и поэтому нет понятия метки. Это является недостатком (относительным) языка и затрудняет организацию возвращения вычислительного процесса к любому предыдущему или последующему оператору программы.

Все операторы цикла и условного перехода построены в MatLAB в виде сложного оператора, который начинается служебным словом if, while, switch, for и заканчивается служебным словом end. Операторы между этими словами воспринимаются системой как части одного сложного оператора. Поэтому нажатие клавиши [Enter] для перехода к следующей строке не приводит в данном случае к выполнению этих операторов. Выполнение операторов начинается только тогда, когда введена "закрывающая скобка" сложного оператора в виде слова end, а затем нажата [Еп1ег]. Если несколько сложных операторов такого типа вложены один в другой, вычисления начинаются лишь тогда, когда записан конец (end) наиболее охватывающего (внешнего) сложного оператора. Из этого вытекает возможность осуществления даже в режиме калькулятора довольно сложных и объемных (состоящих из многих строк и операторов) вычислений, если они охвачены сложным оператором.

Оператор условного перехода

Конструкция оператора перехода по условию в общем виде такова:

if <условие>

<операторы1>

else

<операторы2>

end

Работает он следующим образом. Вначале проверяется, выполняется ли указанное условие. Если да, то программа выполнив совокупность операторов, которая записана в разделе <операторы1>. В противном случае выполняется последовательность операторов раздела <операторы2>.

Укороченная форма условного оператора имеет вид:

If <условие>

<операторы>

end

Действие оператора в этом случае аналогично, за исключение того, что при невыполнении заданного условия выполняется оператор, следующий за оператором end.

В качестве условия используется выражение типа:

<имя переменной1> <операция сравнения> <имя переменной2>

Операции сравнения рассмотрены ранее.

Условие может быть составным, т.е. складываться из нескольких простых условий, объединяемых знаками логических операций. Логических операций: И, ИЛИ, НЕТ. Логическая операция Исключающее ИЛИ может быть реализована при помощи функции хоr(А,В), где А и В — некоторые условия.

Допустима еще одна конструкция оператора условного перехода:

if <условие1>

<операторы1>

elseif <условие2>

<операторы2>

elseif <условиеЗ>

<операторыЗ>

еlsе

<операторы>

end

Оператор elseif выполняется тогда, когда <условие1> не выполнено. При этом сначала проверяется <условие2>. Если оно выполнено, выполняются <операторы2>, если же нет, то <операторы2> игнорируются и происходит переход к следующему оператору elseif, т.е. к проверке <условия3>. Аналогичным образом при его выполнении обрабатываются <операторы3>, в противном случае происходит переход к следующему оператору elseif. Если ни одно из условий в операторах elseif не выполнено, обрабатываются <операторы>, следующие за оператором else. Таким образом, может быть обеспечено ветвление программы по нескольким направлениям.

Оператор переключения

Оператор переключения имеет такую структуру:

switch <выражение, скаляр или строка символов>

саsе <значение1>

<операторы1>

саsе <значение2>

<операторы2>

otherwise

<операторы>

end

Он осуществляет ветвление вычислений в зависимости от значений некоторой переменной или выражения, сравнивая значение полученного в результате вычисления выражения в строке switch, co значениями, указанными в строках со словом саsе. Соответствующая группа операторов саsе выполняется, если значение выражения совпадает со значением, указанным в соответствующей строке саse. Если значение выражения не совпадает ни с одним из значений в группах сазе, выполняются операторы, следующие за otherwise.

Операторы цикла.

В языке MatLAB есть две разновидности операторов цикла – условный while и арифметический for.

Оператор цикла с предусловием имеет вид;

while <условие>

<операторы>

end

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

Пример вычисления значения синуса при 21 значении аргумента от 0.2 до 4 с шагом 0.2:

I=1;

While i<=20

X=i/5;

Si=sin(x);

Disp([x, si])

I=i+1;

end

Обратите внимание на то, какими средствами в приведенном примере обеспечен вывод на экран нескольких переменных в одну строку.

Для этого используется оператор disp (выводит информацию в командное окно), но в соответствии с правилами применения этого оператора, в нем должен быть только один аргумент (текст, переменная или матрица). Чтобы обойти это препятствие, нужно несколько числовых переменных объединить в единый объект — вектор-строку, а последнее легко выполняется при помощи обычной операции формирования вектора-строки из отдельных элементов [х1, х2, . . ., хN]

Таким образом, с помощью оператора вида: Disp([x1, х2, xN]) можно обеспечить вывод результатов вычислений в виде таблицы данных в командном окне.

Арифметический оператор цикла имеет вид:

for <имя> = <НЗ> : <Шаг> : <КЗ>

<операторы>

end

где <имя> — имя управляющей переменной цикла — счетчика цикла; <НЗ> — заданное начальное значение этой переменной; <Шаг> — значение шага, с которым она должна изменяться; <КЗ> — конечное значение переменной цикла. В этом случае < операторы > внутри цикла выполняются несколько раз (каждый раз при новом значении управляющей переменной) до тех пор, пока значение управляющей переменной не выйдет за пределы интервала между <НЗ> и <КЗ>. Если параметр <Шаг> не указан, по умолчанию его значение принимается равным единице.

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

Графическое оформление результатов(Лазарев стр. 103)

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

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

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

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

При этом нужно обратить внимание на следующее.

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

- Если при тех же условиях диапазоны изменения функций значительно различаются, можно предложить два подхода:

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

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

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

-- краткое сообщение об объекте исследования;

-- математическая модель, положенная в основу осуществленных в программе вычислений с указанием имен параметров и переменных;

-- информация об использованных значениях параметров;

-- информация о полученных значениях некоторых вычисленных интегральных параметров;

-- информация об имени М-файла использованной программы, исполнителе работы и дате проведения вычислительного эксперимента;

-- информация об авторе использованной программы и организации, где он работает.

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

 



<== предыдущая лекция | следующая лекция ==>
Встроенные функции для работы с матрицами. | Разбиение графического окна на подокна


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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