kopia lustrzana https://github.com/Dsplib/libdspl-2.0
138 wiersze
4.7 KiB
Plaintext
Executable File
138 wiersze
4.7 KiB
Plaintext
Executable File
/*!
|
||
\ingroup IN_OUT_GROUP
|
||
\fn int writebin(void* x, int n, int dtype, char* fn)
|
||
\brief Сохранить данные в бинарный файл
|
||
|
||
Функция сохраняет реальный или комплексный вектор данных
|
||
размера `[n x 1]` в бинарный файл `fn`. <BR><BR>
|
||
|
||
Файл является универсальным для хранения как одномерных,
|
||
так и двумерных массивов и имеет следующий формат: <BR><BR>
|
||
|
||
type 4 байта типа `int`. <BR>
|
||
Может принимать значение:<BR>
|
||
`DAT_DOUBLE`, если адрес `x` указывает на вектор вещественных чисел; <BR>
|
||
`DAT_COMPLEX`, если адрес `x` указывает на вектор комплексных чисел.<BR><BR>
|
||
|
||
`n` 4 байта типа `int`. <BR>
|
||
Количество строк данных. <BR><BR>
|
||
|
||
`m` 4 байта типа `int`.<BR>
|
||
Количество столбцов данных. <BR>
|
||
При сохранении вектора всегда равно 1.<BR><BR>
|
||
|
||
data после идут данные в бинарном виде.<BR>
|
||
Размер данных:<BR>
|
||
`n * sizeof(double)`, если `dtype==DAT_DOUBLE`;<BR>
|
||
`n * sizeof(complex_t)`, если `dtype==DAT_COMPLEX`.<BR><BR>
|
||
|
||
Файл может быть использован для верификации алгоритмов сторонними пакетами,
|
||
такими как GNU Octave или Matlab.<BR><BR>
|
||
|
||
\param[in] x Указатель на массив данных. <BR>
|
||
Размер вектора `[n x 1]`.<BR><BR>
|
||
|
||
\param[in] n Размер вектора данных.<BR><BR>
|
||
|
||
\param[in] dtype Тип данных.<BR>
|
||
Может принимать значения: `DAT_DOUBLE` или `DAT_COMPLEX`.<BR><BR>
|
||
|
||
\param[in] fn Имя файла.<BR><BR>
|
||
|
||
\return
|
||
`RES_OK` Файл сохранен успешно.<BR>
|
||
В противном случае \ref ERROR_CODE_GROUP "код ошибки":<BR>
|
||
|
||
\note
|
||
Данная функция производит запись в файл без потери точности,
|
||
поэтому рекомендуется использовать ее для верификации данных DSPL.<BR><BR>
|
||
|
||
Функция для чтения бинарного файла в 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`. <BR>
|
||
|
||
Файл имеет следующий формат<BR>
|
||
|
||
\verbatim
|
||
x[0] y[0]
|
||
x[1] y[1]
|
||
...
|
||
x[n-1] y[n-1]
|
||
\endverbatim
|
||
|
||
Файл может быть использован для построения графика сторонней программой.<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
|
||
|
||
|
||
*/
|