7.3 Изменение размеров данных

Команда MGL: new DAT [nx=1 ny=1 nz=1]
Метод класса mglData: void Create (int mx, int my=1, int mz=1)
Метод класса mglDataC: void Create (int mx, int my=1, int mz=1)
Функция С: void mgl_data_create (HMDT dat, int mx, int my, int mz)
Функция С: void mgl_datac_create (HADT dat, int mx, int my, int mz)

Создает/пересоздает массив данных указанного размера и заполняет его нулями. Ничего не делает при mx, my, mz отрицательных или равных нулю.

Команда MGL: rearrange dat mx [my=0 mz=0]
Метод класса mglData: void Rearrange (int mx, int my=0, int mz=0)
Метод класса mglDataC: void Rearrange (int mx, int my=0, int mz=0)
Функция С: void mgl_data_rearrange (HMDT dat, int mx, int my, int mz)
Функция С: void mgl_datac_rearrange (HADT dat, int mx, int my, int mz)

Изменяет размерность данных без изменения самого массива данных, так что результирующий массив mx*my*mz < nx*ny*nz. Если один из параметров my или mz ноль, то он будет выбран оптимальным образом. Например, если my=0, то будет my=nx*ny*nz/mx и mz=1.

Команда MGL: transpose dat ['dim'='yxz']
Метод класса mglData: void Transpose (const char *dim="yx")
Метод класса mglDataC: void Transpose (const char *dim="yx")
Функция С: void mgl_data_transpose (const char *dim)
Функция С: void mgl_datac_transpose (HADT dat, const char *dim)

Транспонирует (меняет порядок размерностей) массив данных. Новый порядок размерностей задается строкой dim. Функция может быть полезна для транспонирования одномерных (или квазиодномерных) массивов после чтения их из файла.

Команда MGL: extend dat n1 [n2=0]
Метод класса mglData: void Extend (int n1, int n2=0)
Метод класса mglDataC: void Extend (int n1, int n2=0)
Функция С: void mgl_data_extend (HMDT dat, int n1, int n2)
Функция С: void mgl_datac_extend (HADT dat, int n1, int n2)

Увеличивает размер данных путем вставки (|n1|+1) новых срезов после (для n1>0) или перед (для n1<0) существующими данными. Можно добавить сразу 2 размерности для 1d массива, используя второй параметр n2. Данные в новые срезы будут скопированы из существующих. Например, для n1>0 новый массив будет a_ij^new = a_i^old where j=0...n1. Соответственно, для n1<0 новый массив будет a_ij^new = a_j^old, где i=0...|n1|.

Команда MGL: squeeze dat rx [ry=1 rz=1 sm=off]
Метод класса mglData: void Squeeze (int rx, int ry=1, int rz=1, bool smooth=false)
Метод класса mglDataC: void Squeeze (int rx, int ry=1, int rz=1, bool smooth=false)
Функция С: void mgl_data_squeeze (HMDT dat, int rx, int ry, int rz, int smooth)
Функция С: void mgl_datac_squeeze (HADT dat, int rx, int ry, int rz, int smooth)

Уменьшает размер данных путём удаления элементов с индексами не кратными rx, ry, rz соответственно. Параметр smooth задает использовать сглаживания (т.е. out[i]=\sum_{j=i,i+r} a[j]/r) или нет (т.е. out[i]=a[j*r]).

Команда MGL: crop dat n1 n2 'dir'
Метод класса mglData: void Crop (int n1, int n2, char dir='x')
Метод класса mglDataC: void Crop (int n1, int n2, char dir='x')
Функция С: void mgl_data_crop (HMDT dat, int n1, int n2, char dir)
Функция С: void mgl_datac_crop (HADT dat, int n1, int n2, char dir)

Обрезает границы данных при i<n1 и i>n2 (при n2>0) или i>n[xyz]-n2 (при n2<=0) вдоль направления dir.

Команда MGL: crop dat 'how'
Метод класса mglData: void Crop (const char *how="235x")
Метод класса mglDataC: void Crop (const char *how="235x")
Функция Сn: void mgl_data_crop_opt (HMDT dat, const char *how)
Функция Сn: void mgl_datac_crop_opt (HADT dat, const char *how)

Обрезает дальний край данных, чтобы сделать их более оптимальным для быстрого преобразования Фурье. Размер массива будет равен наиболее близким к исходному из 2^n*3^m*5^l. Строка how может содержать: ‘x’, ‘y’, ‘z’ для направлений, и ‘2’, ‘3’, ‘5’ для использования соответствующего основания.

Команда MGL: insert dat 'dir' [pos=off num=0]
Метод класса mglData: void Insert (char dir, int pos=0, int num=1)
Метод класса mglDataC: void Insert (char dir, int pos=0, int num=1)
Функция С: void mgl_data_insert (HMDT dat, char dir, int pos, char num)
Функция С: void mgl_datac_insert (HADT dat, char dir, int pos, char num)

Вставляет num срезов вдоль направления dir с позиции pos и заполняет их нулями.

Команда MGL: delete dat 'dir' [pos=off num=0]
Метод класса mglData: void Delete (char dir, int pos=0, int num=1)
Метод класса mglDataC: void Delete (char dir, int pos=0, int num=1)
Функция С: void mgl_data_delete (HMDT dat, char dir, int pos, char num)
Функция С: void mgl_datac_delete (HADT dat, char dir, int pos, char num)

Удаляет num срезов вдоль направления dir с позиции pos.

Команда MGL: delete dat
Команда MGL: delete 'name'

Удаляет массив данных из памяти.

Команда MGL: sort dat idx [idy=-1]
Метод класса mglData: void Sort (lond idx, long idy=-1)
Функция С: void mgl_data_sort (HMDT dat, lond idx, long idy)

Сортирует строки (или срезы в 3D случае) по значениям в указанной колонке idx (или ячейках {idx,idy} для 3D случая). Не используйте в многопоточных функциях!

Команда MGL: clean dat idx
Метод класса mglData: void Clean (lond idx)
Функция С: void mgl_data_clean (HMDT dat, lond idx)

Удаляет строки в которых значения для заданной колонки idx совпадают со значениями в следующей строке.

Команда MGL: join dat vdat [v2dat ...]
Метод класса mglData: void Join (const mglDataA &vdat)
Метод класса mglDataC: void Join (const mglDataA &vdat)
Функция С: void mgl_data_join (HMDT dat, HCDT vdat)
Функция С: void mgl_datac_join (HADT dat, HCDT vdat)

Объединяет данные из массива vdat с данными массива dat. При этом, функция увеличивает размер массива dat: в z-направлении для массивов с одинаковыми размерами по x и y; в y-направлении для массивов с одинаковыми размерами по x; в x-направлении в остальных случаях.