Сергиенко А.Б. Цифровая обработка сигналов (2002) (1095939), страница 99
Текст из файла (страница 99)
Чтобы отличить массив ячеек от обычного массива, его индексы записываются не в круглых скобках, а в фигурных. В качестве примера представим ту же информацию из тчачфайла, которую мы использовали прп рассмотрении структур, в виде массива ячеек: » и[ 1) = 'с:титпбоивтнебта11аба.иап': Ж ииЯ файла » и[2) = 22050: Ж частота дискретизании » и[3) 16: Ж число бит на отсчет » и[4) - 2; Ж число каналов » и[5) - 42752; Ж число отсчетов » и[6) = иангеаб[и[ 1)); Ж двуиерный пассив отсчетов Приведенный пример не имеет особого практического смысла — в данном случае значительно удобнее был бы доступ по именам полей. Однако массивы ячеек удобны в тех случаях, когда нужно создать массив из векторов разной длины или матриц разного размера.
Примером моткет служить хранение в массиве ячеек информации о фильтре, составленном из последовательно включенных секций разного порядка. МАТ[.АВ показывает содержимое массивов ячеек следующим образом; Сотоппв 1 слгоийл 5 [1х25 снаг! [22050] [16] [2] [42752] Со1ипптв б Ж)тгоодл б [42752х2 ОооЫе] Как и в случае структур, значения элементов, имеющих короткие представления, выводятся полностью, а для болыпих массивов указываются только размеры и тип данных. В данном случае «слишком длпнной» для вывода оказалась и текстовая строка.
Программирование Интерактивная работа с МАТ[.АВ в режиме командной строки очень удобна при освоении системы и при необходимости поэкспериментировать, чтобы испытать разные подходы к анализу и обработке имеющихся данных. Однако по мере приобретения опыта, а также при решении конкретной задачи вы заметите, что очень часто набираете одни и те же последовательности команд. Это означает, что настало время превратить такие последовательности в программы (сценарии) и функции МАТ1.АВ. Эти программы и функции представляют собой текстовые (АВСП) файлы с расширением гп, в которых записаны команды и операторы МАТ[.АВ.
В принципе такие файлы могут создаваться и модифицироваться с помощью любого АВСП- редактора, но, начиная с версити 5, в МАТ1.АВ появился свой редактор, обеспечивающий, в частности, цветовое выделение синтаксических элементов языка, а также интегрированный с отладчиком. О работе с редактором речь пойдет 525 Программирование далее, а сначала следует рассмотреть различия между программами и функция- ми МАТВАВ. Программы и функции Как уже говорилось, текстовые файлы, содержащие операторы 'МЛТВЛВ, могут быть двух типов: програлаиы (зспрц иногла используется дословный перевод— «сценарий» ) и грункг(ии ((ппсВоп).
Между ними имеются следующие различия: О функции имеют заголовок (цпсМоп, а программы — заголовок зсг1р1 или вовсе не имеют заголовка; 0 функции могут принимать входные параметры и возврапгать результаты вычислений, а программы — нет; лз программы используют рабочую область памяти среды МЛТЕЛВ, а каждая функция прп вызове создает свого собственную рабочую область памяти и общается с внепщим миром только через параметры и глобальные переменные (см. далее); О функции могут вызываться пз программ и других функций, а прогрел~му люжно запустить только вручпуго, набрав се имя в командной строке МЛТВАВ.
Итак, как уже было сказано, программы и функции МЛТВЛВ представляют собой текстовые файлы с записью команд, операторов и вызовов функций МАТЮКАВ. В этих файлах могут содержаться любые команды МАТ(.АВ, в том числе те, которые обычно не прцменяготся в командной строке (операторы циклов, условные операторы и т. п:, использование атих средств в командной строке возможно, но приводит к необходимости набирать много текста, так что улобнее оказывается сохранять такие фрагменты в виде файлов программ). В одной строке можно записывать несколько операторов.
Для пх разделения следует использовать точку с запятой (еслн необходимо подавить вывод результатов вычислений в командное окно) или запятую (еслн этот вывод нужно разрешить). Длшшыс строки для улучшения чнтаемости программы можно делить на части. Признаком того, что запись оператора продолжается па следугощей строке, являются три точки в конце строки. Удобно использовать эту возможность, например, для более наглядной записи позлементно заданной матрицы: н = [а ь с ц: Ьосо: сссс; о ц о а]: Хорошая программа невозможна без комментариев.
Для обозначения комментариев в МЛТВЛВ пспользуетгя знак 1 — комментарием считается часть строки справа от пего. Срелства созлания мпогострочнгях комментариев в МАТ(.ЛВ не предусмотрены. При необходимости закоммснтпровать большой фрагмент текста или, наоборот, снять с него знаки комментария можно воспользоваться соответственно командами СощгпепГ и Опсопппепг меню Техг редактора/отладчика (см. далее).
Приложение А. Основы работы с МЯТСАВ Редактор/отладчик М -файлов Для запуска редактора,'отладчика М-файлов необходимо создать новый М-файл или открыть существующий. Для этого используются команды Ые»к» М-(йе и Ореп мешо»ре главного окна МАТ1.АВ нлн соответствующие кнопки панели инструментов, Окно редактора/отладчика показано на рис. А.б. Рис. А.б. Редактор/отладчик М-файлов Функции редактирования и работы с файлами, обеспечиваемые редактором/отладчиком М-файлов, являются типичпымп для текстовых редакторов, поэтому мы не будем обсуждать пх.
Из специфических возможностей следует отметить цветовое выделение синтаксических элементов языка программирования МАТ1.АВ, а также команды меню. Текд позволяющие закомментиронать выделенный фрагмент текста (Соннпеп1), убрать знаки комментария (Опсогпгпеп1), проверить соответствие правых и левых скобок (Ва!апре Ое~итвйе~з), э также автоматически отформатировать левьш край выделенного фрагмента текста (Ваап ! ПпепС).
Правая часть панели инструментов содержит кнопки управления отладчиком, Этн функции редактора/отладчика будут рассмотрены далее, в разделе «Работа с отладчиком», Создание функций Текст М-файла функции должен начинаться с заголовка Гвлст1оп, имеющего следующий внд; твпст1ол (у1, у2, ..З = ',лане(х1, х2....) Здесь Траве — нмя функции, к1, х2 и т. д. — входные параметрьп у1, у2 н т. д. — выходные параметры. Входные и/плп выходные параметры могут отсутствовать.
На самом деле имя функции определяется не строкой Траве, а именем, под которым сохранен М-файл. По этой же причине имена функций, в отличие от имен переменных, не чувствительны к регистру символов, В качестве примера создадим фупкпню с1озезт, которая будет принимать два входных параметра, вектор и число, и выбирать из вектора значение, максималь- 527 Программирование ио близкое ко второму (числовому) параметру.
Для этого, открыв окно редактора/отладчика командой меню рйе > Ь)еыг > Миле, введите слсдутотций текст: 1ипсттол у - с1озезС(А, х) Ж Выбор из кассива А зленента, ближайшего к х [твр, 1ло') - лпл(абз(Р - х)): у - Ашлс); Введя текст, сохраните файл под именем с)оаеабщ. Теперь кратко прокомьте~ггируем этот программный код. Первая строка — это за- головок функции, составлеииьш согласно приведенному ранее шаблону.
Вторая строка, являющаяся коммептарием, — это встроеииая справка об использовании нашей функции. По команде Ье1р траве в командное окно выводятся строки ком- ментария, расположенные в файле тпагле.щ непосредственно после заголовка функции. Проверим это; » Ье1р с1озезС Выбор нз нзсснва А элемента. ближайшего к х Таким образом, создавать встроенную справку для собственных функций совсем несложно, Далее с помощью фушсции вт и определяется номер интересуюшего иас элемента, и в послсдией строке выхолпому параметру у присваивается значение этого эле- мента. Переменные тпб и Сер, создаваемые внутри функции, являются локальгттхми.
Оии создаются впутри фуикгпш и уничтожаются при аавершеиии ее работы, Если переменные с такими жс их|евами существовали в рабочей области памяти МАТЕАВ до вызова функции, их значения пе изменятся. Функция общается с внешним миром только через свои параметры и глобальные перемеггггьге. Чтобы объявить переменную х глобальной, исобходимо использо- вать в головной программе и во осек функциях, которые должны иметь доступ к данной переменной, следующую директиву: 910Ьд1 х Возврат из функции производится по достижении копна ес файла.
Для досроч- ного возврата можно использовать оператор ге1ыгл. В любом случае результата- мп работы функции являются значения, которые выходные параметры имели иа момент возврата, Путь поиска Для того чтобы программа илг функция была доступна из среды МАТ! АВ, система должна быть способна найти соотлетстнугоший М-файл. Поиск файлов осуществляется следующим ооразом: сначала просматривается текущий рабочий каталог (его имя показано в панели ииструмситов главного окна, см. рис.
А.2), а затем каталоги, входящие в пулть поиски (МАТЕАВ зеагсй раей ). Когда пользователь начинает создавать собственные М-файлы, встает вопрос о том, где их целесообразно размешать. На этот счет можно дать следующую рекомендацию: файльг, отпосяшисся к разным проектам, следует размешать в отдсльиых катало- 528 Приложение А. Основы работы с МАТЬ.АВ гах, не добивляя эти каталоги в путь поиска.