Сергиенко А.Б. Цифровая обработка сигналов (2002) (1095939), страница 100
Текст из файла (страница 100)
Выпадаютций список Соггеп1 0)гес1огу панели инструментов главного окна обеспечивает удобство перемещения между каталогамн разных проектов. Если жс в процессе работы у вас начинает формироваться собственная библиотека функций, используемых сразу в нескольких проектах, имеет смысл собрать их в один каталог и добавить его имя в путь поиска (для вызова редактора пути поиска попользуется команда Бе1 Рагн меню Гпе главного окна МАТЮКАВ). Тогда этп функции будут доступны в любой момент, вне зависимости от того, какой каталог является текущим. Логические условия В качестве логических условий в условных операторах я циклах иЫ1е (см.
далее) могут использоваться числовые скалярные значения. Пр11 этом нулевое значение трактуется как «ложь» (Га1ве), а любое ненулевое — как «истина» (тгце). Кроме того, для формирования условий часто используются операторы сравнения (равно), (нс равно), < (меньше), > (больше), <= (меньше илн равно), »= (больше или равно). Следует иметь в виду, что для массивов онн производят по- элементное сравнение, возврагцая массив такого же размера, как сравниваемые \ аргуьтекгы. результирующий массив содержит единицы там, где сравнение элементов дало выполнение условия, и нули там, где условие сравнения выполнено не было.
Для формирования логических условий полезны также следующие функции; ьз а11(х) — возвращает 1, если все элементы х отличны от нуля; апу(х) — возвращает 1, если хотя бы один элемент х отличен от пуля; П 1ведва1(х, у) — возвращает 1, если значения х и у совпадают. В отличие от конструкции а11(х=у), использование данной функшш не приведет к ошибке, если размеры х и у не совпадают; 0 1веарьу(х) — возвращает 1, если х является пустой матрнцей (то есть пмсег размер Онй). Имеется еще довольно лшого функций проверки разнообразных условий, имена которых имеют вид та....
За более подробной информацией обратитесь к справочной системе. Условный оператор Условный оператор в МАТЕАВ реализуется с помощью ключевых слов 1г, е1ве и епб: 11 сапб 1 ветвь, виполнЯеиаЯ. если сопб истинно е1ве Ж ветвь. виполнЯенаЯ. если сопб ложно 529 Программирование Здесь сопб — проверяемое значение г'см. ранее раздел «Логические условия»). Для оператора т~, елоаггеитгого в ве~вь е1 хе другого (вггешггего) оператора т~, есть сокращенная форма записи с использованием ключевого слова е1 ве1 Г: 1Ж сопб1 Ж ветвь. выполнЯенаЯ. если сопб1 истинно е15ют сопо2 Ж ветвь.
выполнЯеиаЯ. если сопб1 ложно, а сопб2 истинно е1ве Ж ветвь, выполнЯеивЯ, если сопб1 и сопб2 ложны епб Аналогичным образом можно использовать е1 вет Ж несколько раз. Оператор выбора Если в условном операторе выбирается олна из двух возможных альтернатив, то оператор выбора реализует разветвление программы на несколько путей. Выбор конкретного пути зависит от значения заданной переменной. Запись оператора выбора в МАТ1.АВ производится с помощью ключевых слов внттйсЬ, саве, оЖЬегнтде и епб: внттвсл х саве х1 Ж ветвь.
выполнЯенаЯ. если х равно х1 саве х2 Ж ветвь, выполнЯенаЯ, если х равно х2 овлегн1ве Ж ветвь. выполнЯеиаЯ. если все условиЯ саяе не соблюдаютсЯ епб При выполнения оператора выдбсЬ значение х поочередно сравппвается с х1, х2 н т. д. При обнаружении первого совпадеггня выполняются операторы соответствующей ветви, после чего производится выход из оператора выбора. Таким образом, в отличие от аналогичного оператора языка С, «проваливания» на следующую ветвь не происходит и операторы Ьгеат; в конце каждой ветви в МАТЮКАВ не нужны. Циклы Для реализации циклов в МАТЕАВ имеется лва оператора — бог и нМ1е, В операторе Жег переменная-счстчик цикла поочередно принимает значения элементов некоторого вектора: 530 Приложение А.
Основы работы с аДАТСАВ (ог 1 = х Х тепе цикла епй Операторы, входящие в тело цикла, будут выполняться ирп зиачеппи переменпой Х, равном х(1), затем х(2) и т. л. ло х(епй). После заверцгсиия цикла значение Х остается равным х(епо). Разумеется, чаще всего в цикле гог используется послеловательиый перебор целочислспиых зиачсппй счетчика цикла: (ог х -1й Однако ири пеобхолимости можно использовать лробиос значение шага гог к = -1;0.01:1 изпг перебор произвольных зпачсипи: (ог Д = (1 10 рз 9 1п(3)) ВНИМАНИЕ Изучая программирование, люли, как правило, приобретают привьтку использовать в качсстне счстчикон циклов исрсмсииыс с именами( и ), В МЛТ1 ЛВ вто чревато неприятностями, поскольку ио умолчанию зти исрсмсииыс имеют зивчсиис мнимой едииипы. Исиользоваинс исрсмсииой 1 или ) одновременно в качестве счетчика цикла н в качестве мнимой слииипы — зто те мраблгы, иа которые рнио или иозлио наступают очень кикнпгс исльзоннтсли МЛТ1.ЛВ.
Чтобы избсжщ» неприятностей, необходимо выработать поные привычки. Злссь есть несколько нариаитон. Во-первых, можно просто избегать использования имси 1 и ) н качестве счетчиков. Во-вторых, можно в качестве мивмой сливины использовать ис нсрсненную 1 ()), а констгттр 11 (11). В третьих, можно приучить себя исиользовап лнухбуквсииыс имена счетчиков: и,)) и т. л. Второй тии циклов реал~гзуется с помощью оператора иМ!е. Тело цикла выполняется, пока условие сепо остается истшшым (то есть значение сепо отлично от нуля): ий)1е сепо' Ж тело цикла епо' Если сепо изиачальио имеет пулевое значение, тело цикла пе булет вьшолиеио пи разу.
Чтобы реализовать досрочное заверщсиие цикла, используется оператор Ьгеак. Разумеется, оп должен лримсияться в сочетании с условным оператором, иапример так: Гог Х =1:й $ перваЯ половина тена цикла Ж проверка дополнительного условиЯ завершениЯ тб сепо' Ьгеа'к епо' 531 Программирование Ж втораЯ половина тела цикла епс Оператор Ьгеак можно использовать для реализации циклов с проверкой условия завершения не в начале (как делает оператор ий11е), а в произвольном месте цикла. Для этого с помощью оператора ий1!е создается «вечный» цикл, а его завершение производится оператором Ьгеа!и нл1!е 1 $ «венний» цикл Ъ перваЯ половина тела цикла $ проверка условиЯ заверэениЯ 11 сопи Ьгеак епо 1 втораЯ половина тела цикла епс Кроме оператора Ьгевй для управления выполнением программы внутри никла имеется оператор сопС1пце. Размещенный внутри цикла тог илн иП1!е, этот оператор передает управление па проверку ус.тония завершения цикла, пропуская при этом оставшийся фрагмент тела цикла.
Это позволяет сделать код более наглядным, избежав использования длшшого оператора 1б Функции с переменным числом параметров При вызове функции можно использовать меньшее количество входных и выходных параметров, чем указано в заголовке функции. Прн этом рассчитанные функцией «лншнис» выходные параметры просто игнорируются. Что касается неуказанных входных параметров, то функция выдаст сообщение об ошибке, когда попытаегся обратиться к одному из них.
Однако внутри функции доступны сведения об использованном прп вызове числе входных и выходных параметров, что позволяет в зависимости от этого управлять алгоритмом работы функции. Число переданных входных параметров можно узнать с помощью функции пагд1 и, а число ожидаемых выходных параметров — с помощью функции пагдоц1. В простейшем случае функция пагдап может использоваться для задания входным параметрам значений по умолчанию: тцпсСтоп у = пагдйл сепо(к. Л'. вц, 11С) 11 пагд1п < 4 йо = 1: епс тт пагд1п < 3 вм = 0.2; ело тт пагдтл < 2 М = 25б; епо 532 Приложение А. Основы работы с МАТ(АВ При вызове такой функции можно опускать один, два или три последних входных параметра, аналогично тому, как это позволяют делать язык С-н+ и последние версии языка ОЬ)есс Рапса!: у = пагд1п с)епа(х, й, п)и, 11б) й полный вариант у = пагд1п с)епю(х, )).
ко) у = пагд1п с)еп)о(х, И) у - пагдтп с)еао(х) Вместо опущенных параметров будут использованы заданные в тексте функции значения по умолчанию. Аналогичным образом можно использовать и функцию пагдовй — например, чтобы сэкономить время, не вычисляя незатребованные выходные величины. Можно использовать функции пагд1 п и пагдоц~ и для более серьезного управления логикой работы — скажем, менять используемый алгоритм в зависимости от числа входных и выходных параметров.
Ввод и вывод данных Как мы уже знаем, простейшим способом вывода значения переменной в командное окно МАТ(.АВ является указание ее имени без точки с запятой. Аналогичное действие производит функция б1вр(паве), отличие заключается только в том, что на экран не будет выводиться идентификатор переменной паве. Форматированный вывод Чтобы выводить в командное окно информацию в более аккуратном виде, следует воспользоваться функциями форматированного вывода. Это функции врг1пйт (формирование строковой переменной с форматированным текстом) н Трг1птп (вывод форматированного текста в поток вывода). Синтаксис обеих функций очень схож и практически не отличается от синтаксиса соответствуюших функций языка С.
Поэтому кратко рассмотрим лишь функцию Трг1птб Тргппгп(Т)с(, 'Тогп)а1'. х1. х2 ...) Здесь 11б — числовой идентификатор потока вывода. При нулевом значении вывод не производится, значение 1 соответствует стандартному потоку вывода (вывод в командное окно), значение 2 — стандартному потоку вывода сообщений об ошибках (по умолчанию это тоже вывод в командное окно). Для записи информации в файл в качестве т10 необходимо использовать значение, полученное от функции Терев при открытии файла (работа с файловыми потоками в данном приложении не рассматривается).
Данный параметр можно опустить, тогда по умолчанию вывод будет производиться в командное окно. Строковый параметр ' тогспас' задает формат вывода. Эта строка должна содержать фиксированный выводимый текст и спецификаторы форжата, на место которых будут подставлены значения переменных х1, х2 и т. д. Спецификаторы формата начинаются со знака Ф, за которым следуют цифры, задаюшие число символов для вывода, и буква, определяющая тип формата.