/*!
\ingroup IN_OUT_GROUP
\fn int writebin(void* x, int n, int dtype, char* fn)
\brief Сохранить данные в бинарный файл
Функция сохраняет реальный или комплексный вектор данных
размера `[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.
\param[in] x Указатель на массив данных.
Размер вектора `[n x 1]`.
\param[in] n Размер вектора данных.
\param[in] dtype Тип данных.
Может принимать значения: `DAT_DOUBLE` или `DAT_COMPLEX`.
\param[in] fn Имя файла.
\return
`RES_OK` Файл сохранен успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки":
\note
Данная функция производит запись в файл без потери точности,
поэтому рекомендуется использовать ее для верификации данных DSPL.
Функция для чтения бинарного файла в GNU Octave и Matlab:
\code
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
\endcode
\author
Бахурин Сергей.
www.dsplib.org
*/
/*!
\ingroup IN_OUT_GROUP
\fn int writetxt(double* x, double *y, int n, char* fn)
\brief Сохранить вещественные данные в текстовый файл
Функция сохраняет вещественные данные в текстовый файл `fn`.
Файл имеет следующий формат
\verbatim
x[0] y[0]
x[1] y[1]
...
x[n-1] y[n-1]
\endverbatim
Файл может быть использован для построения графика сторонней программой.
\param[in] x Указатель на первый вектор.
Размер вектора `[n x 1]`.
\param[in] y Указатель на второй вектор.
Размер вектора `[n x 1]`.
Может быть `NULL`.
Файл будет содержать только один столбец соответствующий
вектору `x` если `y == NULL`.
\param[in] n Размер входных векторов.
\param[in] fn Имя файла.
\return
`RES_OK` Файл сохранен успешно.
В противном случае \ref ERROR_CODE_GROUP "код ошибки":
\note
Данная функция производит округление данных при записи в файл.
Поэтому не рекомендуется использовать ее для верификации данных DSPL.
\author
Бахурин Сергей.
www.dsplib.org
*/