8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 132 133 134 135 136 137 138 ... 365

в качестве их элементов выступают строки одинаковой длины. Создайте, например, массив names из строк Иван*, Олег, Петр:

» names - [Иван; Олег; Петр]

names = Иван

Олег Петр

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

» names(1, :)

ans -

Иван

Использование строк разной длины недопустимо:

» surnames = [Иванов1; Васильев; Петров] ??? Error using ==> vertcat

All rows in the bracketed expression must have the same number of columns.

Очевидно, что names является двумерным массивом (матрицей), состоящим из символов, поэтому возникает ограничение на одинаковую длину строк. Короткие строки следует дополнить пробелами до максимальной из длин строк, входящих в массив. Функция char позволяет просто решить эту задачу:

» surnames = char(Иванов, Васильев, Петров)

surnames =

Иванов

Васильев

Петров

К первой и последней строке добавились справа два пробела, и длина всех строк стала одинаковой. Для удаления лишних пробелов при доступе к строкам массива предназначена функция debiank:

» surnl = debiank(surnames(1, :))

surnl =

Иванов

Аргументами char могут быть и массивы строк, что позволяет помещать строки в начало или конец существующих массивов строк, например:

» surnames = char(surnames, Сидоров)

surnames =

Иванов


Васильев

Петров

Сидоров

Поиск в массиве строк производится функцией strmatch, входными аргументами которой являются образец подстроки для поиска и массив строк, а выходным — номера строк массива:

» mas = char(1Март, 1 Апрель, 1Май); » ind = strmatch(Ma, mas) ind =

1 3

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

Наличие большого числа строк приводит к необходимости хранения их в текстовых файлах. Подготовка и корректировка текстового файла могут быть осуществлены средствами любого текстового редактора, в том числе редактора М-файлов MATLAB.

Текстовые файлы

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

[ Примечание

Средства работы с файлами в MATLAB имеют много общего со средствами среды программирования языка С. Существенным отличием является ввод данных из файла, ориентированный на работу с массивами.


Открытие файла,

считывание данных и закрытие файла

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

□ rt — открываемый текстовый файл предназначен только для чтения;

□ rt+ — открываемый текстовый файл предназначен для чтения и записи;

□wt— создаваемый пустой текстовый файл предназначен только для записи;

□wt+ — создаваемый пустой текстовый файл предназначен для записи и чтения;

П at — открываемый текстовый файл предназначен только для добавления данных в конец файла (если файла не существует, то он создается);

□at+ — открываемый текстовый файл предназначен для добавления данных в конец файла и чтения данных (если файл не существует, то он создается).

Примечание

Символ t указывает на то, что файл текстовый. Вышеперечисленные способы доступа возможны и для двоичных файлов. Например: w+ означает создание пустого двоичного файла для чтения и записи.

Выходным аргументом fopen является идентификатор (ссылочный или логический номер), присвоенный файлу. Если файл открыть не удалось, то идентификатор становится равным минус единице. Ошибки часто возникают из-за того, что MATLAB не может найти требуемый для чтения файл. Всегда лучше указывать полное имя файла, при задании только имени и расширения MATLAB производит поиск в текущем каталоге и путях поиска. Например, если в вашем текущем каталоге нет файла beep.m, то fopen(beep.m,rt •) найдет его в подкаталоге \toolbox\matIab\general\ основного каталога MATLAB. Функция fopen может быть вызвана и со вторым дополнительным выходным аргументом— строковой переменной с сообщением о результате открытия.

Считывание строк из открытого текстового файла производится командой fgeti, входным аргументом которой является идентификатор файла, присвоенный ему при открытии, а выходным — строковая переменная. Каждое обращение к fgeti позволяет последовательно считывать строки по одной от начала до конца файла. Контроль за достижением конца файла осущест-



0 ... 132 133 134 135 136 137 138 ... 365