Функции ввода - вывода данных

Функции

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

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

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

Функции

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:

    1 function [dat, n, m] = readbin(fn)
    2 
    3 fid = fopen(fn);
    4 if(~fid)
    5     error('cannot to open file');
    6 end
    7 type = fread(fid, 1, 'int32');  
    8 n    = fread(fid, 1, 'int32');
    9 m    = fread(fid, 1, 'int32');
   10 
   11 if(type==0)
   12     dat = fread(fid, [n*m, 1], 'double');
   13 end
   14 
   15 if(type==1)
   16     y = fread(fid, [n*m*2, 1], 'double');
   17   dat = y(1:2:end) + 1i * y(2:2:end);
   18 end
   19 
   20 dat = reshape(dat, n, m);
   21 
   22 fclose(fid);
   23 end
Автор
Бахурин Сергей. www.dsplib.org
int writetxt ( double *  x,
double *  y,
int  n,
char *  fn 
)

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

Функция сохраняет вещественные данные в текстовый файл fn.

Файл имеет следующий формат

x[0]    y[0]
x[1]    y[1]
...
x[n-1]  y[n-1]

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

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

[in]yУказатель на второй вектор.
Размер вектора [n x 1].
Может быть NULL.
Файл будет содержать только один столбец соответствующий вектору x если y == NULL.

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

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

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