Ввод/вывод данных в GNU Octave

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Автор: Владимир Кореньков
Правильная ссылка: http://xgu.ru/wiki/octave/input_output

Содержание


[править] Работа с файловой системой

GNU Octave предоставляет практически полный набор системных команд для выполнения операций по управлению файлами и каталогами.

[править] Создание каталога

Синтаксис:

[status, msg, msgid] = mkdir (dir)
[status, msg, msgid] = mkdir (parent, dir)

где

dir - название создаваемой директории
parent - название каталога в котором создается dir
status - равен 1, если функция выполнена успешно, в противном случае 0
msg - текстовое сообщение о результате выполнения
msgid - уникальный идентификатор (unique message identifier)

В первом варианте вызова функции параметр dir должен содержать полный путь, например

dir = "D:/Octave/Temp"

во втором - только название папки:

parent = "D:/Octave"
dir = "Temp"

[править] Удаление каталога

Синтаксис:

[status, msg, msgid] = rmdir (dir)
[status, msg, msgid] = rmdir (dir, "s")

Все параметры аналогичны функции создания директории, кроме ключа "s", который указывает на рекурсивное удаление всех подкаталогов dir.

[править] Проверка существования каталога

Синтаксис:

isdir (dir)

В случае существования dir, возвращает 1, иначе - 0.

[править] Просмотр содержимого каталога

Синтаксис:

[files, err, msg] = readdir (dir)

Если каталог dir существует, т.е. err=0, то каждый элемент массива files будет содержать название файла либо подкаталога, находящихся в dir.

Существует еще один способ просмотра содержимого каталога, который отличается от выше приведенного возможностью фильтрации по шаблону:

glob(pattern)

Например, при первом вызове функции, переменной content (по типу это должен быть cell array) будут присвоены названия всех файлов либо подкаталогов, во втором - только файлов, чье расширение "m":

content = glob("D:/Octave/Temp/*");
content = glob("D:/Octave/Temp/*.m");

[править] Переименование перемещение и копирование файла

Синтаксис:

[err, msg] = rename (f1, f2)
[status, msg, msgid] = movefile (f1, f2)
[status, msg, msgid] = copyfile (f1, f2)

Функции переименовывают, перемещают и копируют файл f1 в f2 (переменные должны содержать полные пути). В случае успешного выполнения операции, status=1 иначе 0 (или err=0 иначе -1).

[править] Проверка существования файла

Синтаксис:

[info, err, msg] = stat (file)
[info, err, msg] = lstat (file)

В общем, эти две функции предназначены для вывода информации о файле, но в случае отсутствия такового, err=-1.


Пример 1. Переименование файлов (добавление к началу имени каждого файла порядкового номера)

# Файл RenameFiles.m
#
# формируем шаблон поиска
Pattern = "D:/Octave/*.m";
# в массив Files записываем все названия файлов с полными путями
Files = glob(Pattern);
# если в "D:/Octave" нет ни одного m-файла, завершаем работу
if (length(Files) == 0)
disp("Directory does not contain m-files");
return;
endif
# сортируем названия файлов по алфавиту
Files = sort(Files);
# для каждого "старого" названия формируем "новое" имя
for i = 1:length(Files)
OldName = File{i};
# дописываем ведущие нули
if (i<10)
Number = strcat("0", num2str(i));
else
Number = num2str(i);
endif
# выделяем из названия файла путь, имя и расширение
[dir, name, ext, ver] = fileparts (OldName);
# новое название состоит из пути к файлу, системного разделителя, порядкового номера, прочерка, старого имени и расширения
NewName = strcat(dir, "/", Number, "-", name, ext);
# выполняем операцию переименования
rename (OldName, NewName);
endfor

Пример использования
> # В каталоге "D:/Octave" находятся следующие файлы:
> readdir("D:/Octave")
ans =
{
[1,1] = .
[2,1] = ..
[3,1] = article59_files
[4,1] = Temp
[5,1] = article59.htm
[6,1] = ConvertDateToText.m
[7,1] = InterpolationLagrange.m
[8,1] = foo.txt
[9,1] = SaveLoadFiles.m
}
>
> RenameFiles
>
> # Результат:
> readdir("D:/Octave")
ans =
{
[1,1] = .
[2,1] = ..
[3,1] = article59_files
[4,1] = Temp
[5,1] = 01-ConvertDateToText.m
[6,1] = 02-InterpolationLagrange.m
[7,1] = 03-SaveLoadFiles.m
[8,1] = article59.htm
[9,1] = foo.txt
}


[править] Функции ввод/вывода

GNU Octave имеет в своем составе два несколько различных способа ввода/вывода данных. Первый из них ориентирован на работу с массивами (т.е. с уже сформированными в табличном виде данными), а также сохранение/загрузку значений переменных. Второй способ - более гибкий и в значительной степени заимствованный из языка программирования C.

[править] Простые функции доступа к файлам

Синтаксис:

save options FileName v1 v2 ...vn или save ("FileName", "v1", "v2", ..., vn)
load options FileName v1 v2 ...vn или load ("FileName", "v1", "v2", ..., vn)

[править] Ввод/вывод текстовых данных

Текстовый формат GNU Octave

[править] Ввод/вывод двоичных данных

Двоичный формат GNU Octave


Octave GNU Octave

Инсталляция | Синтаксис языка | Командная строка
Скрипты | Функции | Регулярные выражения | Массивы | Графики | Ввод/вывод данных
Распределенные вычисления | Численные методы | Сплайны