libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
Функции ввода - вывода данных

Функции

int writebin (void *x, int n, int dtype, char *fn)
 Сохранить данные в бинарный файл Подробнее...
 

Подробное описание

Функции ввода и вывода данных. Запись и считывание данных в бинарные и текстовые файлы

Функции

◆ writebin()

int writebin ( void *  x,
int  n,
int  dtype,
char *  fn 
)

Сохранить данные в бинарный файл


Функция сохраняет реальный или комплексный вектор данных размера [n x 1] в бинарный файл fn.

Файл является универсальным для хранения как одномерных, так и двумерных массивов и имеет следующий формат:

type 4 байта типа int.
Может принимать значение:
DAT_DOUBLE, если адрес x указывает на вектор вещественных чисел;
DAT_COMPLEX, если адрес x указывает на вектор комплексных чисел.

n 4 байта типа int.
Количество строк данных.

m 4 байта типа int.
Количество столбцов данных.
При сохранении вектора всегда равно 1.

data после идут данные в бинарном виде.
Размер данных:
n * sizeof(double), если dtype==DAT_DOUBLE;
n * sizeof(complex_t), если dtype==DAT_COMPLEX.

Файл может быть использован для верификации алгоритмов сторонними пакетами, такими как GNU Octave или Matlab.

Аргументы
[in]xУказатель на массив данных.
Размер вектора [n x 1].

[in]nРазмер вектора данных.

[in]dtypeТип данных.
Может принимать значения: DAT_DOUBLE или DAT_COMPLEX.

[in]fnИмя файла.

Возвращает
RES_OK Файл сохранен успешно.
В противном случае код ошибки:
Заметки
Данная функция производит запись в файл без потери точности, поэтому рекомендуется использовать ее для верификации данных DSPL.

Функция для чтения бинарного файла в GNU Octave и Matlab:

function [dat, n, m] = readbin(fn)
fid = fopen(fn);
if(~fid)
error('cannot to open file');
end
type = fread(fid, 1, 'int32');
n = fread(fid, 1, 'int32');
m = fread(fid, 1, 'int32');
if(type==0)
dat = fread(fid, [n*m, 1], 'double');
end
if(type==1)
y = fread(fid, [n*m*2, 1], 'double');
dat = y(1:2:end) + 1i * y(2:2:end);
end
dat = reshape(dat, n, m);
fclose(fid);
end
Автор
Бахурин Сергей. www.dsplib.org
 

См. определение в файле inout.c строка 119