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

Функции

int writebin (void *x, int n, int dtype, char *fn)
 Сохранить данные в бинарный файл Подробнее...
 
int writetxt (double *x, double *y, int n, 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
\author
    Бахурин Сергей.
    www.dsplib.org  

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

◆ writetxt()

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]
Файл может быть использован для построения графика сторонней программой.<BR><BR>

\param[in] x        Указатель на первый вектор. <BR>
                            Размер вектора `[n x 1]`.<BR><BR>

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

\param[in] n        Размер входных векторов.<BR><BR>

\param[in] fn       Имя файла.<BR><BR>


\return
`RES_OK`                    Файл сохранен успешно.<BR>
                    В противном случае \ref ERROR_CODE_GROUP "код ошибки":<BR>

\note 
    Данная функция производит округление данных при записи в файл. 
    Поэтому не рекомендуется использовать ее для верификации данных DSPL.

\author
Бахурин Сергей.
www.dsplib.org      
Примеры:
dft_indexation.c, filter_approx.c, fourier_series_pimp_spectrum.c, fourier_series_rec.c и sinc_test.c.

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