Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Символьная переменная в М-файле:
str=’P I Pupkin’ ее символьное содержимое заключается в кавычки. Ввод: xleft=input('введите левую границу интервала поиска '); Вывод: disp('ВВОД ИСХОДНЫХ ДАННЫХ края диапазона поиска, точность по аргументу ИЛИ по функции '); disp(string); Рис. 1.4. Описание функции в М-файле В общем виде обращение к функции [n1, n2, …, n10]=funName(v1, v2, …, v4) где в квадратных скобках необязательный список возвращаемых значений (то есть имена переменных которым будут присвоены соответствующие значения). Если их не указывать то МАТЛАБ сам создаст какие-то переменные и присвоит им эти значения. В круглых скобках обязательный список аргументов (то есть имена переменных значения которых будут обрабатываться как аргументы функции). В М-файле описание функции начинается с слова function как в примере function [x,y,xleft1,xright1,nn]=ZolS1() в примере функция не нуждается в аргументах поэтому ее список аргументов пуст. Присутствуют только пустые круглые скобки. Ее вызов в тексте М-файла (в том месте программы где функция вызвана она исполняется) [x,y,xleft1,xright1,nn]=ZolS1(); Сохранение File—Save при этом откроется окно (рис.1.5), в котором надо будет указать где и под каким именем хотите сохранить этот М-файл. Рис. 1.5. Сохранение М-файла Имя сохраняемого файла должно совпадать с именем описанной в нем функции (то есть описанная в нем программа считается функцией и ее описание начинается с указания какого-нибудь имени этой функции, под которым она дальше и будет вызваться для исполнения) Если какие-то М-файлы уже созданы ранее то их можно посмотреть командой File—Open и выбрать тот который нужен. Для рассмотрения простейших операций ввода/вывода и текстовых комментариев целесообразно создать m-файл в виде скрипта с именем Kvadr2S: Для ввода 3-х коэффициентов квадратного уравнения a*x^2+b*x+c=0 служат 3 оператора: a=input('a='); b=input('b='); c=input('c='). В результате в командных строках последовательно появятся надписи: a= b= c=, куда следует записать конкретные значения коэффициентов a,b,c. Команда clc стирает все предыдущие записи в командных строках Command Window.
Оператор вывода disp (x) служит для вывода в рабочую область Command Window чисел и переменных – первые четыре оператора disp программы выводят символьные переменные, заключенные в кавычки, которые характеризуют решаемую задачу - в данном случае это определение корней квадратного уравнения.
Далее следуют два текстовых комментария действий программы, перед которыми ставится знак процента (%): %вычисление детерминанта det=b^2-4*a*c; %вычисление двух корней x1=(-b-sqrt(det))/2/a; x2=(-b+sqrt(det))/2/a; В конце программы с применением условного оператора if представлены два варианта вывода в рабочую область Command Window корней уравнения x1 и x2, в зависимости от того являются ли они вещественными (det>=0) или комплексными (det<0): А) Если корни комплексно сопряженные, то запись вывода выполняется в 4 строки: if det<0 disp('x1='); disp(x1); disp('x2='); disp(x2); и для коэффициентов a =2; b =3; c =4 результаты также выводятся в 4 строки в виде: x1= -0.7500 - 1.1990i x2= -0.7500 + 1.1990i Б) Если корни вещественные, то запись вывода выполняется в 1 строку: else disp(sprintf('x1=%g x2=%e',x1,x2)); end Функция sprintf ('x1=%g x2=%e',x1,x2)указывает на то, список выводимых переменных x 1, x 2 будет выводиться в одну строку, с обозначениями и форматами (представлены после знака процент %), приведенными в кавычках. В данном случае для х1 обозначение будет x1=, а формат g –после обозначения %, а для x2 обозначение будет x2=, а формат e –после обозначения %. Ниже приведены 5 символов управления форматированием (d – десятичная цифра, а e –представление числа в виде: 10 в степени): d – десятичное целое со знаком f – значение со знаком вида [-]dddd.dddd; e – значение со знаком вида [-]d.dddd e [+|-]ddd; g – значение со знаком типа e или f в зависимости от значения или точности s – строка символов. Форматирование s и f используется при записи вывода значения детерминанта квадратного уравнения:
s0='Детерминант уравнения = '; disp(sprintf('%s %d',s0,det)); В результате получается вывод значений символьной переменной (s 0) и детерминанта квадратного уравнения (det) для коэффициентов a =2; b =3; c =4 получается в одну строку: Детерминант уравнения = 23.000000, а для коэффициентов - a =1; b =7; c =1: Детерминант уравнения = 45.000000 Для последних коэффициентов (a =1; b =7; c =1) корни уравнения, выводимые в одну строку с использованием оператора: disp(sprintf('x1=%g x2=%e',x1,x2)); получаются в виде: x1=-6.8541 x2=-1.458980e-001 Следует отметить, что эту же программу можно оформить в виде двух программных модулей: · Функции без параметров Kvadr2 F. m, которая является головной и используется для ввода данных и вывода результатов, а также обращения к функции с параметрами func_kvadr_ur. m · Функции с параметрами Function[x1,x2]= func_kvadr_ur (a,b,c), в которой вычисляются корни квадратного уравнения с произвольными коэффициентами a,b,c. Ниже приведены коды этих двух m-файлов:
Декларация global det; используется в обоих программных модулях, так как вычисленные значения детерминанта в файле func _ kvadr _ ur. m необходимы для вывода этой величины в файле Kvadr2 F. m. В заключении этого раздела следует отметить, что встроенная функция MATLAB roots (p), где p =[ a, b, c ] -- последовательность коэффициентов уравнения многочлена (в данном случае квадратного, т.е. второй степени), может решить рассмотренную выше задачу следующим образом в рабочей области Command Window:
Программа, написанная на языке MATLAB, сохраняется в файл с расширением.m (это так называемый М-файл) и называется M -программой. М-программа состоит из операторов на встроенном в MATLAB языке программирования (M -языке программирования) и обращений к стандартным и нестандартным (создаваемыми пользователями) функциям MATLAB. Следует отметить две особенности M -языка программирования: а) для определения (декларирования) новой переменной ей необходимо присвоить значение, причем любая переменная в MATLAB является матрицей (в простейшем случае эта матрица состоит из одной строки и одного столбца):
б) методы вычислительной математики оформлены в виде стандартных функций расчетов, для применения которых в тексте программы к ним надо обратиться с конкретными фактическими значениями аргументов. Например, для определения всех корней уравнений многочленов произвольной степени необходимо обратиться к функции roots следующим образом: z = roots ([1,4,5,9,-10])
Здесь в круглых и квадратных скобках указываются 5 коэффициентов уравнения многочлена 4-ой степени следующего вида: 1*x^4+4*x^3+5*x^2+9*x-10=0: M -программу необходимо написать в соответствующем редакторе (Editor) М-файлов. Редактор (Editor) можно открыть так: File--New--M-file. После того как программа готова ее сохраняют (File—Save as). Причем сохранить надо обязательно именно с тем именем файла, которое не отличается (полностью по буквам совпадает) с именем функции, описанной в программе. При написании программы ее следует оформлять как описание функции, имеющей список исходных аргументов (их значения передаются в функцию и должны быть определены до ее вызова), а также список возвращаемых переменных (их значения вычисляются при работе функции). Текст функции заканчивается словом end. Если возвращаемое значение одно, то можно написать заголовок так: function y = ext (x) где слово function является обязательным, у имя возвращаемой переменной, х имя аргумента, ext имя функции выбранное ее составителем по своему усмотрению. При сохранении в М-файл, конечно, файл будет называться так же как и функция и иметь расширение. m то есть ext. m. Если возвращаемых значений много, то их заключают в квадратные скобки function [ a, b, c ]= ertVert (x, y, z) и когда необходимо вызвать функцию, например, в Command Window, то сначала определяют значения аргументов x,y,z, и уже затем вызывают функцию (без использования слова function, просто [ a, b, c ]= ertVert (x, y, z) и получают вывод в окне Command Window значений возвращаемых переменных). Сначала рассмотрим ввод-вывод для программ, не снабженных индивидуальным визуальным интерфейсом. (Они уже упоминались чуть выше). Для ввода используется команда x = input (‘ x =?’) где х имя переменной, которая вводится. Для вывода используется команда disp (‘ a =’) и с ней еще disp (a). Кроме того, можно не ставить точку с запятой при вычислении переменных и тогда они сразу будут появляться в Command Window. Если ввод-вывод программы не требует указания исходных аргументов и возвращаемых переменных, то скобки пишутся пустыми function []= ertVert 2() Оператор УСЛОВНЫЙ. if. Оператор УСЛОВНЫЙ в MATLAB проверяет истинно или нет какое-то условие. Если условие истинно, то условный оператор возвращает единицу. Если ложно, то возвращает ноль. Оператор УСЛОВНЫЙ (рис.1.6) описывается в тексте как if. После него пишется условие. Если условие выполняется, то будет выполнено действие, описанное ниже. Однако если условие не выполняется, то не будет выполнено действие, описанное ниже условия. Произойдет переход к слову else, которое располагается ниже всех действий, выполняемых в случае, если условие выполнилось. Слово else означает начало описания всех тех действий, которые будут выполнены, если не выполнилось условие, указанное после слова if. После действий, выполняемых, если не выполнилось условие, указанное после слова if, пишется слово end, завершающее описание всех действий.
В условии должно быть указано либо сравнение числовых значений переменных (переменной и числа), либо логическая операция:
Рис.1.6. Оператор условный if. Условный оператор может использоваться как в Command Window, так и в функции и скрипте. В М-файлах широко используется оператор if. Он состоит из условия, варианта действий если оно выполняется, запасного варианта действий и иногда еще из условия№2 и варианта действий для него.
Оператор Условный, проверяя условие, возвращает ноль (если условие не выполняется) или единицу (если условие выполняется) и может присвоить это значение (1 или 0) переменной, поэтому можно написать в Command Window, что переменная равна условному оператору.
Например пусть х=2, у=3, тогда z =(x > y) приведет к ответу z=0, так как x > y неверно (ложно) и оператор Условный вернет ноль и присвоит его переменной z.
Логические выражения. В зависимости от пожеланий пользователя, он может употреблять различные варианты написания одних и тех же по смыслу (по вычисляемому результату) логических выражений в условном операторе. Смысл логического выражения заключается в том, что на основании значений (1 или 0) исходных переменных делается вывод (вычисляется возвращаемое значение 1 или 0) по правилам, предусмотренным для данного логического выражения. Пусть исходные переменные называются Х и У. Они принимают значения 1 (истина) или 0 (ложь). Логическое выражение может быть конъюнкция (Х и У), дизъюнкция (Х или У), отрицание (не Х). Все остальные выражения могут быть сведены к последовательности конъюнкций, дизъюнкций и отрицаний. Для логических выражений (Табл.1.1) предусмотрены команды MATLAB. Некоторые из них называются логическими операторами, а остальные называются логическими операциями. Оператор это функция, аргументы которой указываются в скобках. Операция имеет знак операции, который ставится между переменными.
Табл.1.1. Логические выражения. Правила (Табл.1.2), по которым определяются возвращаемые значения для логических выражений, следующие:
Табл.1.2. Правила логических выражений. Х и У. Если обе переменные равны единице, то возвращается единица, иначе возвращается ноль. В тексте программы пишется как x & y или and (x, y). Х или У. Если хотя бы одна из переменных равна единице, то возвращается единица, иначе ноль. В тексте программы пишется как x | y или or (x, y). Не Х. Если Х единица то возвращается ноль. Если Х ноль то возвращается единица. В тексте программы пишется как ~ x или not (x). Исключающее или. Если Х и У не одинаковые, возвращает единицу. Если Х или У имеют одинаковое значение (оба истинны или оба ложны) то тогда возвращает ноль. В тексте программы пишется как xor (x, y).
Оператор СРАВНЕНИЯ. switch Также в М-файлах по мере необходимости используют оператор switch, он находит среди списка заранее предусмотренных значений то, которое совпадает с переменной, или убеждается что ни одно не совпало. Соответственно, либо выполняется вариант действий для совпавшего (case) значения, либо вариант действий (otherwise) на случай если ничего не совпало. Функция Start_exSwitch задает x=1 и вызывает функцию exSwitch. Результаты выводятся в Command Window.
Если надо какую-то последовательность действий выполнить многократно, то используют цикл. Он бывает либо с заранее указанным числом повторов (итераций), либо повторяет до выполнения какого-то условия и тогда заканчивает. Цикл С ПРЕДУСЛОВИЕМ. while Цикл while x >0 повторяет пока верно указанное условие. Цикл СО СЧЕТЧИКОМ. for Цикл for x =1:3 присваивает переменной х указанное начальное значение 1, и затем после каждой итерации увеличивает его на шаг по умолчанию 1. Когда переменная х превысит указанное максимальное значение 3, то цикл прекратится. Цикл for x =1:0.1:3 присваивает переменной х указанное начальное значение 1, и затем после каждой итерации увеличивает его на указанный шаг 0,1. Когда переменная х превысит указанное максимальное значение 3, то цикл прекратится. Прерывание цикла break, continue Важное значение имеют три разных случая. В первом из них требуется, чтобы действия, предусмотренные в цикле, повторялись полностью все от начала до конца. Это обеспечивается просто последовательным изложением операций в тексте программы. Во втором случае требуется, чтобы при каком-то условии (в случае если условие верно) прекратить циклический повтор и выйти из цикла, продолжив работу программы с той строки, которая расположена после конца цикла (после оператора end). Это обеспечивается оператором break. В третьем случае требуется, чтобы при каком-то условии (в случае если условие верно) не выполнять те действия в составе цикла, которые расположены ниже по тексту, а продолжить с начала текста цикла. При этом счетчик цикла все равно учитывает (отсчитывает) итерацию (проход по тексту цикла, то есть его выполнение), на которой это произошло. Используется оператор continue. Операторы break и continue можно использовать в одном и том же цикле, причем неоднократно. Функция Start_exWhileFor задает x=1, y=2, z=5 и запускает функцию exWhileFor. Результаты выводятся в Command Window.
Цикл for x =1:0.1:10 присваивает переменной х указанное начальное значение 1, и затем после каждой итерации увеличивает его на указанный шаг 0,1. Когда переменная х превысит указанное максимальное значение 10, то цикл прекратится.
Вызов одной функции из другой. feval Иногда бывает необходимо из одной функции вызвать другую. Это несложно. Но бывает так, что имя этой функции заранее не известно. Тогда имя функции следует указать как аргумент той функции, внутри которой произойдет ее вызов. В таком случае имя функции указывается как строка символов, то есть для ее вызова надо использовать специальную команду. Это команда feval. Ей передается в качестве аргумента (в скобках) имя функции, которую надо будет вызвать. Опишем функцию exFun (x, y). Ее в дальнейшем будем вызывать в качестве одного из аргументов функции exFeval (x, y, nameFunction). Для работы функции exFun необходимо передавать функции exFun значения двух переменных (аргументов функции). Поэтому укажем при вызове функции exFeval (x, y, nameFunction) два аргумента. Их значения будут использоваться в качестве аргументов функции exFun. Саму же функцию exFun мы передадим при вызове функции exFeval (x, y, nameFunction) в качестве аргумента функции, названного в ее описании как nameFunction. Вызов будет выглядеть в Command Window следующим образом res = exFeval (x, y,' exFun ') где res возвращаемое значение функции exFeval, ‘ exFun ’ это функция exFun, переданная как строка символов, совпадающая с ее названием. В составе функции exFeval есть вызов функции feval. Он выглядит следующим образом res = feval (nameFunction, x, y). В качестве аргумента nameFunction как раз и выступает переданное функции exFeval название (как строка символов) ‘ exFun ’. Соответственно, именно ее и вызовет функция feval. При этом x, y являются аргументами функции exFeval, они же передаются в функцию feval и они же будут аргументами функции exFun. В результате функция exFun вычислит возвращаемое значение res и оно и будет возвращаемым значением функции feval и затем возвращаемым значением функции exFeval.
Функция со списком аргументов неизвестного заранее состава и количества. varargin Обычно для каждой функции есть определенный список аргументов, указываемый в круглых скобках. Однако в некоторых случаях бывает нужно оперировать списком аргументов неизвестного заранее состава, как по числу аргументов, так и по их типу (числовые, символьные, и т.д.). Для такого случая предусмотрен массив varargin. varargin указывается в описании функции в качестве аргумента, например exVar (varargin). Это означает, что пользователь при вызове функции укажет в круглых скобках несколько аргументов, например exVar (1,2,' a ',' q ',3). Это могут быть числа или символы (строки символов). Символы указываются в верхних одинарных кавычках (апостроф). Если пользователь укажет имена переменных, то они не будут восприниматься как элементы массива varargin. Например, создать массив vectorArguments =[2,3,4,' d ',' f '] и передать его в качестве аргумента при вызове exVar (vectorArguments). Это приведет к некорректной работе функции, аргументом которой предусмотрен varargin. Функция isnumeric (varargin { i }) возвращает 1 (истина) или 0 (ложь) в зависимости от того, является ли элемент массива varargin с индексом i числом или нет
Отладка функций осуществляется с помощью пункта меню Debug. Так, например, предусмотрены точки останова Debug—Set—Clear Break Points. Также есть точки останова с помощью команды. В них можно задать условие, останавливающее (в случае его выполнения) работу программы. Они расположены в Debug—Set—Modify Conditional. Пошаговое выполнение Debug—Step или Debug—Step In. Выполнение до курсора Debug—Go Until Cursor.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-11-27; просмотров: 28; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.131.168 (0.073 с.) |