libharkio3
A File I/O and Data Manipulation Library for HARK
 All Classes Files Functions Variables Enumerations Enumerator Macros Groups
libharkio3.h
Go to the documentation of this file.
1 
24 #ifndef __LIBHARKIO3__
25 #define __LIBHARKIO3__
26 
27 
28 #include <stdio.h>
29 #include <zip.h>
30 #include <complex.h>
31 #undef I
32 #undef complex
33 
37 #define HARK_EPS 0.0001
38 
42 #define HARKIO_VER "1.3"
43 
47 #define HARKIO_TAG "HARK1.3"
48 
49 
53 enum Coordinate {
56 };
57 
64 };
65 
74 };
75 
79 enum harkio_TFType { loctf , septf };
80 
84 // enum Calculate { Calc_Add , Calc_Sub , Calc_Multi , Calc_Div };
85 
89 enum harkio_DataType { harkio_DataType_INT32 , harkio_DataType_FLOAT32 , harkio_DataType_COMPLEX };
90 enum UseTagType { NON_TAG , USE_TAG , ID_TAG };
91 
95 enum InternalAllocFlag { NO_INTERNAL_ALLOC, INTERNAL_ALLOC };
96 
97 
98 //#ifdef __unix__
99 // #define COMPLEX_TYPE float _Complex
100 typedef float _Complex COMPLEX_TYPE;
101 //#else
102 // #define COMPLEX_TYPE complex<float>
103 //#endif
104 
105 
109 typedef struct {
110  int (*imap)(int);
111  float(*fmap)(float);
112  COMPLEX_TYPE(*cmap)(COMPLEX_TYPE);
114 
115 typedef int (*harkio_Matrix_calcfuncInt32)(int, int);
116 typedef float(*harkio_Matrix_calcfuncFloat32)(float, float);
117 typedef COMPLEX_TYPE(*harkio_Matrix_calcfuncComplex)(COMPLEX_TYPE, COMPLEX_TYPE);
118 
122 #define HARK_DIM 2 //dimention
123 
127 #define harkio_Log_setLevel(PrintLevel) harkio_Log_printf_( (enum harkio_Log_logLevel)-1, "", PrintLevel, __func__, __LINE__)
128 
132 #define harkio_Log_printf(LogLevel, message) harkio_Log_printf_(LogLevel, message, 0, __func__, __LINE__)
133 
137 #define HARKIO_CURRENT_LEVEL harkio_Log_Debug
138 
142 #define MSG_LEN 4192
143 
144 
148 #ifdef _MSC_VER
149 #define DEPRECATED(X) __declspec(deprecated(X))
150 #else
151 #define DEPRECATED(X) __attribute__((deprecated(X)))
152 #endif
153 
154 
158 typedef union {
159  int *intdata;
160  float *floatdata;
161  COMPLEX_TYPE *complexdata;
162 } multipleType;
163 
167 typedef struct {
168  char tag[32];
169  char type[32];
170  int dim;
171  int rows;
172  int cols;
174 } harkio_Matrix;
175 
179 typedef struct {
180  int id;
181  enum Coordinate sys;
182  float *coord;
183  char *path;
187  int *channels;
189 
193 typedef struct {
194  int size;
195  int frame;
196  char *type;
198  enum InternalAllocFlag allocflag;
200 
204 typedef struct {
205  char *comment;
207  char *TSPpath;
208  int TSPoffset;
209  int TSPLength;
212  int nfft;
214  int signalMax;
215 } harkio_Config;
216 
237 typedef struct {
238  int size;
239  int *ids;
241  int **neighbors;
243  enum NeighborAlgorithm alg;
245 
249 typedef struct {
253 } harkio_XML;
254 
258 typedef struct {
259  struct zip *handle;
269 
270 
271 
272 #if defined(__cplusplus)
273 extern "C" {
274 #endif
275 
276 /******
277  API declaration
278  ******/
279 // Matrix
280 harkio_Matrix* harkio_Matrix_new(char *type, int rows, int cols);
281 harkio_Matrix* harkio_Matrix_eye(char *type, int size);
282 harkio_Matrix* harkio_Matrix_zeros(char *type, int rows, int cols);
283 harkio_Matrix* harkio_Matrix_ones(char *type, int rows, int cols);
285 harkio_Matrix* harkio_Matrix_fromZip(struct zip *handle, char *path);
287 
291 int harkio_Matrix_write(harkio_Matrix *m, char *path);
292 char* harkio_Matrix_writeBuffer(harkio_Matrix *m, size_t *size);
293 size_t harkio_Matrix_size(harkio_Matrix *m, int *size);
294 
299 harkio_Matrix* harkio_Matrix_sumRow(harkio_Matrix *matrix);
300 harkio_Matrix* harkio_Matrix_sumCol(harkio_Matrix *matrix);
301 harkio_Matrix* harkio_Matrix_sumAll(harkio_Matrix *matrix);
302 
303 harkio_Matrix* harkio_Matrix_sum(harkio_Matrix **matrix , int num);
304 
312 harkio_Matrix* harkio_Matrix_ecosh(harkio_Matrix *m);
313 harkio_Matrix* harkio_Matrix_elog(harkio_Matrix *m);
314 harkio_Matrix* harkio_Matrix_elog10(harkio_Matrix *m);
315 harkio_Matrix* harkio_Matrix_ereal(harkio_Matrix *m);
316 harkio_Matrix* harkio_Matrix_eimag(harkio_Matrix *m);
317 harkio_Matrix* harkio_Matrix_emulCInt32(harkio_Matrix *m, int value);
318 harkio_Matrix* harkio_Matrix_emulCFloat32(harkio_Matrix *m, float value);
319 harkio_Matrix* harkio_Matrix_emulCComplex(harkio_Matrix *m, COMPLEX_TYPE value);
320 harkio_Matrix* harkio_Matrix_edivCInt32(harkio_Matrix *m, int value);
321 harkio_Matrix* harkio_Matrix_edivCFloat32(harkio_Matrix *m, float value);
322 harkio_Matrix* harkio_Matrix_edivCComplex(harkio_Matrix *m, COMPLEX_TYPE value);
323 harkio_Matrix* harkio_Matrix_epowerCInt32(harkio_Matrix *m, int value);
327 harkio_Matrix* harkio_Matrix_ecalcCInt32(harkio_Matrix *m, int value, harkio_Matrix_calcfuncInt32 func);
328 harkio_Matrix* harkio_Matrix_ecalcCFloat32(harkio_Matrix *m, float value, harkio_Matrix_calcfuncFloat32 func);
329 harkio_Matrix* harkio_Matrix_ecalcCComplex(harkio_Matrix *m, COMPLEX_TYPE value, harkio_Matrix_calcfuncComplex func);
330 harkio_Matrix* harkio_Matrix_reshape(harkio_Matrix *m, int rows, int cols);
333 
334 int harkio_Matrix_setValueInt32(harkio_Matrix *m, int row, int col, int value);
335 int harkio_Matrix_getValueInt32(harkio_Matrix *m, int row, int col, int *value);
336 int harkio_Matrix_setValueFloat32(harkio_Matrix *m, int row, int col, float value);
337 int harkio_Matrix_getValueFloat32(harkio_Matrix *m, int row, int col, float *value);
338 int harkio_Matrix_setValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE value);
339 int harkio_Matrix_getValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE *value);
340 harkio_Matrix* harkio_Matrix_getValues(harkio_Matrix *matrix,int rowFrom ,int rowTo,int colFrom,int colTo);
341 int harkio_Matrix_setValues(harkio_Matrix *m1 , harkio_Matrix *m2 , int row , int col);
344 // int harkio_Complex_calc(COMPLEX_TYPE *value , COMPLEX_TYPE valuea , COMPLEX_TYPE valueb , enum Calculate calc);
345 int harkio_CheckType(char *type);
346 
347 
348 // Config
350 harkio_Config* harkio_Config_copy(harkio_Config *cfg);
352 
355 int harkio_Config_getTSPoffset(harkio_Config *cfg);
356 int harkio_Config_getPeakSearchFrom(harkio_Config *cfg);
357 int harkio_Config_getPeakSearchTo(harkio_Config *cfg);
358 int harkio_Config_getNfft(harkio_Config *cfg);
359 int harkio_Config_getSamplingRate(harkio_Config *cfg);
360 int harkio_Config_getTSPLength(harkio_Config *cfg);
361 int harkio_Config_getSignalMax(harkio_Config *cfg);
362 
364 
365 int harkio_Config_setSynchronousAverage(harkio_Config *cfg, int value);
366 int harkio_Config_setTSPpath(harkio_Config *cfg, const char *value);
367 int harkio_Config_setTSPoffset(harkio_Config *cfg, int value);
368 int harkio_Config_setPeakSearchFrom(harkio_Config *cfg, int value);
369 int harkio_Config_setPeakSearchTo(harkio_Config *cfg, int value);
370 int harkio_Config_setNfft(harkio_Config *cfg, int value);
371 int harkio_Config_setComment(harkio_Config *cfg, const char *value);
372 int harkio_Config_setSamplingRate(harkio_Config *cfg, int value);
373 int harkio_Config_setTSPlength(harkio_Config *cfg, int value);
374 int harkio_Config_setSignalMax(harkio_Config *cfg, int value);
375 
376 int harkio_Config_isEqual(harkio_Config *a, harkio_Config *b);
377 int harkio_Config_isEqual(harkio_Config *a, harkio_Config *b);
378 void harkio_Config_print(harkio_Config *cfg);
379 char* harkio_Config_printBuffer(harkio_Config *cfg);
380 
381 // Position
382 harkio_Position* harkio_Position_new(int id, enum Coordinate sys, float *coord, char *path);
385 char* harkio_Position_printBuffer(harkio_Position* pos);
386 
388 int harkio_Position_setPosition(harkio_Position* pos, enum Coordinate sys, float *coord);
392 int harkio_Position_Convert(harkio_Position *pos, float *coord, enum Coordinate type);
393 float harkio_Position_convToRadian(float degree);
394 float harkio_Position_convToDegree(float radian);
397 int harkio_Position_setChannels(harkio_Position* pos , const int *channels, const int numChannels);
398 int harkio_Position_setNumChannels(harkio_Position* pos , int numChannels);
399 int harkio_Position_setChannelsUse(harkio_Position* pos , int channels_use);
400 
401 
402 // Positions
403 harkio_Positions* harkio_Positions_new(char *type, int frame, int size, harkio_Position **pos);
404 harkio_Positions* harkio_Positions_newFromXMLbuffer(char *buffer, int len, char *dtdpath);
411 int harkio_Positions_removeByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance);
413 harkio_Position* harkio_Positions_getByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance);
417 
418 
419 
420 // Neighbors
424 
426 int harkio_Neighbors_getNeighbors(harkio_Neighbors *nbrs, int id, int *numNeighbors, int **neighbors);
427 int harkio_Neighbors_append(harkio_Neighbors *nbrs, int id, int numNeighbors, int *neighbors);
430 
431 int harkio_Neighbors_Algorithms_NearestNeighbor(harkio_Neighbors *nbrs, int n, float thresh);
433 
435 
436 // utils
437 float euclidDistance(harkio_Position *pos_a , harkio_Position *pos_b , int length);
438 
439 
440 // XML
442 harkio_XML* harkio_XML_newFromXML(char *xmlpath, char *dtdpath);
443 harkio_XML* harkio_XML_newFromXMLbuffer(char *buffer, int strlen, char *dtdpath);
445 void harkio_XML_delete(harkio_XML **xml);
446 
447 harkio_Config* harkio_XML_getConfig(harkio_XML *xml);
448 
449 int harkio_XML_write(harkio_XML *xml, FILE *outstream);
450 int harkio_XML_writeHead(FILE *outstream);
451 int harkio_XML_writePositions(harkio_Positions *poses, FILE *outstream);
452 int harkio_XML_writeTail(FILE *outstream);
453 
454 harkio_Neighbors *harkio_XML_getNeighbors(harkio_XML *xml);
455 harkio_Positions *harkio_XML_getPositions(harkio_XML *xml);
457 
458 
459 // TF
461 harkio_TransferFunction* harkio_TransferFunction_fromFile(char *path, char *signature);
464 
465 int harkio_TransferFunction_write(harkio_TransferFunction *tf, char *path, char *signature);
466 //int harkio_TransferFunction_readTFs(harkio_TransferFunction *tf);
467 
472 
477 
484 
487 DEPRECATED("use 'harkio_Compat_TransferFunction_readlibharkio2'") int libharkio3_TransferFunction_readlibhakio2(harkio_TransferFunction **tf, char *loctfpath , char *septfpath);
488 DEPRECATED("use 'harkio_Compat_SeparationMatrix_readlibharkio2'") int libharkio3_SeparationMatrix_readlibhakio2(harkio_TransferFunction **tf, char *sepmatpath , char *tfzippath);
489 
490 
491 
492 
493 // Log
494 void harkio_Log_printf_(enum harkio_Log_logLevel LogLevel, char *message , int PrintLevel, const char *func, int line);
495 void harkio_Log_FileOpenFailed(char *filename);
496 void harkio_Log_WrongValue(char *valuename, char *reason);
497 void harkio_Log_NullPointer(char *valuename);
498 //void harkio_Log_FuncStart(char *funcname);
499 
500 
501 #if defined(__cplusplus)
502 }
503 #endif
504 
505 #endif
harkio_DataType
harkio_Matrix の型を表す
Definition: libharkio3.h:89
harkio_Matrix * harkio_Matrix_fromFile(char *path)
harkio_Matrix_write で書き込んだファイルを読み込む。
Definition: libharkio3_matrix.c:336
harkio_Position * harkio_Position_copy(harkio_Position *p)
 harkio_Position をコピーする
Definition: libharkio3_position.c:594
int harkio_Positions_isEqual(harkio_Positions *a, harkio_Positions *b)
 2つの harkio_Positions が等しいか否かを判定する
Definition: libharkio3_positions.c:788
harkio_Neighbors * harkio_Neighbors_copy(harkio_Neighbors *poses)
harkio_Neighbors の内容を コピーする
Definition: libharkio3_neighbors.c:725
Definition: libharkio3.h:72
int harkio_Neighbors_append(harkio_Neighbors *nbrs, int id, int numNeighbors, int *neighbors)
新しい隣接関係を追加する。与えられた ID に隣接関係がすでに定義されていれば追加し、定義が無ければ新しく作成する。
Definition: libharkio3_neighbors.c:335
harkio_Position ** pos
Definition: libharkio3.h:197
int harkio_Matrix_setValueFloat32(harkio_Matrix *m, int row, int col, float value)
float32 型の harkio_Matrix の値を設定する
Definition: libharkio3_matrix.c:1361
harkio_Log_logLevel
harkio_Log で、メッセージのログがどのレベルかを表す。
Definition: libharkio3.h:69
char * harkio_Positions_getType(harkio_Positions *poses)
Getter。harkio_Positions のタイプを返す。
Definition: libharkio3_positions.c:407
harkio_Positions * poses
Definition: libharkio3.h:260
int harkio_Position_getSys(harkio_Position *pos)
Getter。harkio_Position の 座標系を返す。
Definition: libharkio3_position.c:180
int harkio_Matrix_isEqual(harkio_Matrix *a, harkio_Matrix *b)
2つの harkio_Matrix オブジェクトが等しいかどうかを判定する
Definition: libharkio3_matrix.c:1839
InternalAllocFlag
保持メモリの割当て状態を管理するフラグ(内部用)
Definition: libharkio3.h:95
harkio_Matrix * harkio_Matrix_zeros(char *type, int rows, int cols)
要素が全てゼロの行列を生成するコンストラクタ
Definition: libharkio3_matrix.c:125
int * numNeighbors
Definition: libharkio3.h:240
harkio_Positions の隣接関係を表す構造体。自分を含む。s
Definition: libharkio3.h:237
harkio_Matrix * harkio_Matrix_getDiag(harkio_Matrix *m)
対角成分を取り出す
Definition: libharkio3_matrix.c:2314
int harkio_Matrix_getValueInt32(harkio_Matrix *m, int row, int col, int *value)
int32 型の harkio_Matrix の値を取り出す
Definition: libharkio3_matrix.c:1220
int internal_locsize
Definition: libharkio3.h:266
int harkio_Matrix_setValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE value)
complex 型の harkio_Matrix の値を設定する
Definition: libharkio3_matrix.c:1411
float * harkio_Position_getPosition(harkio_Position *pos)
Getter。harkio_Position の座標を返す。
Definition: libharkio3_position.c:132
harkio_Matrix * harkio_Matrix_reshape(harkio_Matrix *m, int rows, int cols)
行列の並び順を変更する
Definition: libharkio3_matrix.c:2961
int harkio_XML_write(harkio_XML *xml, FILE *outstream)
harkio_XML をファイルに保存する。
Definition: libharkio3_xml.c:249
int harkio_Position_setPosition(harkio_Position *pos, enum Coordinate sys, float *coord)
Setter。harkio_Position の 座標を更新する。
Definition: libharkio3_position.c:205
harkio_Positions * harkio_TransferFunction_getMicrophones(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の マイク位置を表す harkio_Positions を返す
Definition: libharkio3_transferfunction.c:466
int harkio_CheckType(char *type)
[内部用] harkio_Matrix の型判定
Definition: libharkio3_matrix.c:2207
harkio_XML * harkio_XML_newFromXMLbuffer(char *buffer, int strlen, char *dtdpath)
コンストラクタ。XMLが格納された文字列へのポインタから、harkio_XML オブジェクトを生成する
Definition: libharkio3_xml.c:128
int libharkio3_TransferFunction_readlibhakio2(harkio_TransferFunction **arg_tf, char *loctfpath, char *septfpath)
harkio2フォーマットの伝達関数ファイルを読み込み、構造体を構成する。(deprecated)
Definition: libharkio3_conversion.c:183
Definition: libharkio3.h:70
位置を表す構造体。
Definition: libharkio3.h:179
harkio_Matrix * harkio_Matrix_ones(char *type, int rows, int cols)
要素が全て1の行列を生成するコンストラクタ
Definition: libharkio3_matrix.c:195
int harkio_TransferFunction_appendLocTF(harkio_TransferFunction *tf, harkio_Matrix *tfs)
harkio_TransferFunction の定位伝達関数を表す harkio_Matrix 配列に要素を追加する。
Definition: libharkio3_transferfunction.c:741
int samplingRate
Definition: libharkio3.h:213
harkio_Config * cfg
Definition: libharkio3.h:252
int synchronousAverage
Definition: libharkio3.h:206
int rows
Definition: libharkio3.h:171
Definition: libharkio3.h:73
伝達関数ファイルの XML (位置、隣接関係、設定) の読み書きのための構造体
Definition: libharkio3.h:249
harkio_Position * harkio_Positions_getByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance)
Getter。harkio_Positions が持つ harkio_Position のから、与えられた位置に近いものを返す。
Definition: libharkio3_positions.c:347
harkio_Neighbors * nbrs
Definition: libharkio3.h:263
int harkio_Config_getSynchronousAverage(harkio_Config *cfg)
Getter。harkio_Config の同期加算回数を返す
Definition: libharkio3_config.c:75
harkio_Matrix * harkio_Matrix_etanh(harkio_Matrix *m)
要素ごとに双曲線正接値を求めた行列を返す
Definition: libharkio3_matrix.c:2508
int harkio_Positions_removeById(harkio_Positions *poses, int id)
 harkio_Positions から、与えられた ID の harkio_Position を削除する
Definition: libharkio3_positions.c:570
int channelsUse
Definition: libharkio3.h:185
harkio_TransferFunction * harkio_TransferFunction_new(void)
コンストラクタ。空の伝達関数構造体 harkio_TransferFunctionを作成する。
Definition: transferfunction.py:109
char * comment
Definition: libharkio3.h:205
enum NeighborAlgorithm harkio_Neighbors_getNeighborAlgorithm(harkio_Neighbors *nbs)
Getter. harkio_Neighbors の近接関係計算アルゴリズムを返す。
Definition: libharkio3_neighbors.c:242
harkio_Position * harkio_Positions_getById(harkio_Positions *poses, int id)
Getter。harkio_Positions が持つ harkio_Position のから、与えられた id と同じものを返す。
Definition: libharkio3_positions.c:308
harkio_Positions * mics
Definition: libharkio3.h:261
char * harkio_Config_getComment(harkio_Config *cfg)
Getter。harkio_Config のコメントを返す
Definition: libharkio3_config.c:61
harkio_Neighbors * nbrs
Definition: libharkio3.h:251
int peakSearchFrom
Definition: libharkio3.h:210
int harkio_Neighbors_Algorithms_NearestNeighbor(harkio_Neighbors *nbrs, int n, float thresh)
近接関係計算アルゴリズムの実装。近傍をクラスタリングする方法。
Definition: libharkio3_neighbors.c:464
NeighborAlgorithm
harkio_Neighbors で、Position (伝達関数測定位置など) が隣接しているか否かを判定するアルゴリズムを表す。
Definition: libharkio3.h:61
harkio_Matrix * harkio_TransferFunction_getTFById(harkio_TransferFunction *tf, int id, enum harkio_TFType tf_type)
harkio_TransferFunction 構造体に含まれる伝達関数群から特定の伝達関数を取り出す
Definition: libharkio3_transferfunction.c:1062
int harkio_Neighbors_calcNeighbors(harkio_Neighbors *nbrs, enum NeighborAlgorithm alg,...)
harkio_Neighbors に登録されている位置の近接関係を計算する。
Definition: libharkio3_neighbors.c:280
struct zip * handle
Definition: libharkio3.h:259
int peakSearchTo
Definition: libharkio3.h:211
harkio_Neighbors * harkio_Neighbors_new(harkio_Positions *poses)
コンストラクタ。近接関係を表すオブジェクトを生成する。
Definition: libharkio3_neighbors.c:31
void harkio_Neighbors_print(harkio_Neighbors *nbrs)
harkio_Neighbors の内容を stderr に表示する。
Definition: libharkio3_neighbors.c:622
harkio_TransferFunction * harkio_Compat_TransferFunction_readlibharkio2(char *loctfpath, char *septfpath)
コンストラクタ。harkio2フォーマットの伝達関数ファイルを読み込み、構造体を構成する。
Definition: libharkio3_conversion.c:149
harkio_Matrix * harkio_Matrix_sum(harkio_Matrix **matrix, int num)
複数 harkio_Matrix の要素ごとの総和を求める
Definition: libharkio3_matrix.c:1115
COMPLEX_TYPE * complexdata
Definition: libharkio3.h:161
int TSPLength
Definition: libharkio3.h:209
harkio_Matrix ** loctfs
Definition: libharkio3.h:264
harkio_Matrix * harkio_Matrix_getValues(harkio_Matrix *matrix, int rowFrom, int rowTo, int colFrom, int colTo)
harkio_Matrix の部分行列を取り出す
Definition: libharkio3_matrix.c:1506
int frame
Definition: libharkio3.h:195
void harkio_Positions_print(harkio_Positions *pos)
 harkio_Positions をテキストで表示する
Definition: libharkio3_positions.c:719
harkio_Config * harkio_Config_new(void)
コンストラクタ。空の harkio_Config を作成する。
Definition: config.py:119
harkio_Matrix * harkio_TransferFunction_getTFByPos(harkio_TransferFunction *tf, harkio_Position *pos, float tolerance, enum harkio_TFType tf_type)
harkio_TransferFunction 構造体に含まれる伝達関数群から特定の伝達関数を取り出す
Definition: libharkio3_transferfunction.c:998
harkio_XML * harkio_XML_new(void)
コンストラクタ。新たな harkio_XML オブジェクトを生成する。
Definition: xml.py:73
伝達関数そのものを表す構造体
Definition: libharkio3.h:258
int harkio_TransferFunction_setLocTFs(harkio_TransferFunction *tf, harkio_Matrix **tfs)
Setter。harkio_TransferFunction の音源位置ごとの定位伝達関数を表す harkio_Matrix 配列へのポインタを設定する
Definition: libharkio3_transferfunction.c:662
harkio_Positions * harkio_Positions_copy(harkio_Positions *pos)
 harkio_Positions をコピーする
Definition: libharkio3_positions.c:679
int TSPoffset
Definition: libharkio3.h:208
harkio_Matrix * harkio_Matrix_esquare(harkio_Matrix *m)
要素ごとに自乗した行列を返す
Definition: libharkio3_matrix.c:2425
harkio_Matrix * harkio_Matrix_eye(char *type, int size)
単位行列生成するコンストラクタ
Definition: libharkio3_matrix.c:266
harkio_Positions * poses
Definition: libharkio3.h:250
harkio_XML * harkio_XML_newFromData(harkio_Positions *ps, harkio_Neighbors *nbrs, harkio_Config *cfg)
コンストラクタ。harkio_XML のメンバへのポインタを受け取って、新たな harkio_XML オブジェクトを生成する。
Definition: libharkio3_xml.c:107
int harkio_Positions_removeByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance)
 harkio_Positions から、与えられた座標の harkio_Position を削除する
Definition: libharkio3_positions.c:636
harkio_Neighbors * harkio_TransferFunction_getNeighbors(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の harkio_Neighbor を返す
Definition: libharkio3_transferfunction.c:440
harkio_TransferFunction * harkio_Compat_SeparationMatrix_readlibharkio2(char *sepmatpath, char *tfzippath)
コンストラクタ。harkio2フォーマットの分離行列ファイルを読み込み、構造体を構成する。
Definition: libharkio3_conversion.c:165
位置の集合を表す構造体。
Definition: libharkio3.h:193
harkio_Matrix内部用。
Definition: libharkio3.h:158
harkio_Matrix ** septfs
Definition: libharkio3.h:265
int harkio_Positions_getFrame(harkio_Positions *poses)
Getter。harkio_Positions のフレーム番号を返す。
Definition: libharkio3_positions.c:461
harkio_XML * harkio_XML_newFromXML(char *xmlpath, char *dtdpath)
コンストラクタ。ファイルを読み込んで、新たな harkio_XML オブジェクトを生成する。
Definition: libharkio3_xml.c:64
Definition: libharkio3.h:55
伝達関数などの、行列を表す構造体。
Definition: libharkio3.h:167
harkio_Matrix * harkio_Matrix_copy(harkio_Matrix *m)
harkio_Matrix をコピーする。
Definition: libharkio3_matrix.c:601
harkio_Matrix * harkio_Matrix_makeDiag(harkio_Matrix *m)
列ベクトルを対角成分にもつ正方行列を返す
Definition: libharkio3_matrix.c:2357
harkio_Positions * harkio_Positions_new(char *type, int frame, int size, harkio_Position **pos)
コンストラクタ。空の位置セットのオブジェクト harkio_Positions を作成する。
Definition: libharkio3_positions.c:39
size_t harkio_Matrix_size(harkio_Matrix *m, int *size)
harkio_Matrix のサイズを取得する
Definition: libharkio3_matrix.c:1954
Definition: libharkio3.h:63
float harkio_Position_convToDegree(float radian)
 内部用関数。 ラジアン(radian)から角度(degree)に変換
Definition: libharkio3_position.c:678
char * TSPpath
Definition: libharkio3.h:207
int harkio_Position_getID(harkio_Position *pos)
Getter。harkio_Position の ID を返す。
Definition: libharkio3_position.c:155
int id
Definition: libharkio3.h:180
float * coord
Definition: libharkio3.h:182
Coordinate
harkio_Positions で座標軸を表す。
Definition: libharkio3.h:53
int harkio_Neighbors_getSize(harkio_Neighbors *nbs)
Getter. harkio_Neighbors に登録されている harkio_Positions の長さ
Definition: libharkio3_neighbors.c:215
void harkio_Matrix_print(harkio_Matrix *m)
harkio_Matrix を表示する
Definition: libharkio3_matrix.c:1718
void harkio_Matrix_delete(harkio_Matrix **m)
デストラクタ。
Definition: libharkio3_matrix.c:549
int nfft
Definition: libharkio3.h:212
int harkio_TransferFunction_setMicrophones(harkio_TransferFunction *tf, harkio_Positions *value)
Setter。harkio_TransferFunction のマイク位置に対応する harkio_Positions を設定する
Definition: libharkio3_transferfunction.c:590
int harkio_XML_writeHead(FILE *outstream)
harkio_Positions をXMLファイルに保存する。
Definition: libharkio3_xml.c:290
int ** neighbors
Definition: libharkio3.h:241
Definition: libharkio3.h:62
void harkio_XML_delete(harkio_XML **xml)
デストラクタ。harkio_XML のメモリを解放する。
Definition: libharkio3_xml.c:175
int internal_sepsize
Definition: libharkio3.h:267
harkio_Matrix * harkio_Matrix_ecalcCInt32(harkio_Matrix *m, int value, harkio_Matrix_calcfuncInt32 func)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2826
harkio_TFType
伝達関数が定位用か分離用かを表す。(内部用)
Definition: libharkio3.h:79
int harkio_TransferFunction_setPositions(harkio_TransferFunction *tf, harkio_Positions *value)
Setter。harkio_TransferFunction の音源位置に対応する harkio_Positions を設定する
Definition: libharkio3_transferfunction.c:626
int signalMax
Definition: libharkio3.h:214
harkio_Matrix * harkio_Matrix_ctranspose(harkio_Matrix *m)
行列を複素共役転置する
Definition: libharkio3_matrix.c:3084
harkio_Matrix * harkio_Matrix_ediv(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の要素ごとの商を求める。
Definition: libharkio3_matrix.c:2230
float * floatdata
Definition: libharkio3.h:160
harkio_Matrix * harkio_Matrix_transpose(harkio_Matrix *m)
行列のを転置する
Definition: libharkio3_matrix.c:3029
int harkio_Positions_getSize(harkio_Positions *poses)
Getter。harkio_Positions の harkio_Position の数を返す。
Definition: libharkio3_positions.c:434
char * harkio_Matrix_getTag(harkio_Matrix *xml)
harkio_Matrix のタグを取得する
Definition: libharkio3_matrix.c:1688
伝達関数の計測条件などの一般的な情報を表す構造体
Definition: libharkio3.h:204
char * harkio_Positions_printBuffer(harkio_Positions *pos)
harkio_Positions の文字列表現を格納したバッファを返す。
Definition: libharkio3_positions.c:753
#define DEPRECATED(X)
deprecated関数定義用
Definition: libharkio3.h:151
harkio_Matrix_map で要素ごとの処理を行うための関数ポインタ群。
Definition: libharkio3.h:109
float harkio_Position_convToRadian(float degree)
 内部用関数。 角度(degree)からラジアン(radian)に変換
Definition: libharkio3_position.c:666
int harkio_Position_setNumChannels(harkio_Position *pos, int numChannels)
Setter。harkio_Position の チャンネル数を更新する。
Definition: libharkio3_position.c:287
float euclidDistance(harkio_Position *pos_a, harkio_Position *pos_b, int length)
内部用関数。二つの harkio_Position の距離を求める
Definition: libharkio3_neighbors.c:560
int harkio_Neighbors_isEqual(harkio_Neighbors *a, harkio_Neighbors *b)
harkio_Neighbors が等しいかどうかを比較する。
Definition: libharkio3_neighbors.c:659
int harkio_Positions_append(harkio_Positions *poses, harkio_Position *pos)
 harkio_Positions に新たな harkio_Position を追加する。
Definition: libharkio3_positions.c:496
void harkio_Config_delete(harkio_Config **cfg)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_config.c:33
char * harkio_Matrix_printBuffer(harkio_Matrix *m)
harkio_Matrix の文字列表現を格納したバッファを返す。
Definition: libharkio3_matrix.c:1759
harkio_Matrix * harkio_Matrix_epowerCFloat32(harkio_Matrix *m, float value)
行列を定数でべき乗する
Definition: libharkio3_matrix.c:2757
harkio_Matrix * harkio_Matrix_ecalcCFloat32(harkio_Matrix *m, float value, harkio_Matrix_calcfuncFloat32 func)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2870
harkio_TransferFunction * harkio_TransferFunction_fromData(harkio_Positions *poses, harkio_Positions *mics, harkio_Config *cfg, harkio_Neighbors *nbrs)
コンストラクタ。与えられた 音源位置群、マイク位置群、コンフィグ、隣接音源位置から構造体を生成する。
Definition: libharkio3_transferfunction.c:67
int harkio_TransferFunction_appendSepTF(harkio_TransferFunction *tf, harkio_Matrix *tfs)
harkio_TransferFunction の分離伝達関数を表す harkio_Matrix 配列に要素を追加する。
Definition: libharkio3_transferfunction.c:789
harkio_Matrix * harkio_Matrix_econj(harkio_Matrix *m)
要素ごとに複素共役を求めた行列を返す
Definition: libharkio3_matrix.c:2485
harkio_Matrix * data
Definition: libharkio3.h:184
harkio_Config * cfg
Definition: libharkio3.h:262
Definition: libharkio3.h:71
int harkio_Neighbors_getNeighbors(harkio_Neighbors *nbrs, int id, int *numNeighbors, int **neighbors)
getter。与えられた id の近接 id を返す。[]
Definition: libharkio3_neighbors.c:157
int harkio_TransferFunction_setNeighbors(harkio_TransferFunction *tf, harkio_Neighbors *value)
Setter。harkio_TransferFunction の harkio_Neighbors を設定する
Definition: libharkio3_transferfunction.c:555
char * path
Definition: libharkio3.h:183
harkio_Config * harkio_TransferFunction_getConfig(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の harkio_Config を返す
Definition: libharkio3_transferfunction.c:414
harkio_Matrix * harkio_Matrix_sub(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の差を求める。
Definition: libharkio3_matrix.c:800
char * harkio_Config_getTSPpath(harkio_Config *cfg)
Getter。harkio_Config の TSP 信号のパスを返す
Definition: libharkio3_config.c:88
int libharkio3_SeparationMatrix_readlibhakio2(harkio_TransferFunction **arg_tf, char *sepmatpath, char *septfzippath)
harkio2フォーマットの分離行列ファイルを読み込み、構造体を構成する。(deprecated)
Definition: libharkio3_conversion.c:194
Definition: libharkio3.h:54
int harkio_XML_writePositions(harkio_Positions *poses, FILE *outstream)
harkio_Positions をXMLファイルに保存する。
Definition: libharkio3_xml.c:271
harkio_Matrix * harkio_Matrix_epowerCComplex(harkio_Matrix *m, COMPLEX_TYPE value)
行列を定数でべき乗する
Definition: libharkio3_matrix.c:2768
int * channels
Definition: libharkio3.h:187
void harkio_Neighbors_delete(harkio_Neighbors **nbrs)
デストラクタ。harkio_Neighbors のメモリを解放する。
Definition: libharkio3_neighbors.c:106
harkio_Matrix * harkio_Matrix_eabs(harkio_Matrix *m)
要素ごとの絶対値を要素に持つ行列を返す
Definition: libharkio3_matrix.c:2455
int harkio_Matrix_getValueFloat32(harkio_Matrix *m, int row, int col, float *value)
float32 型の harkio_Matrix の値を取り出す
Definition: libharkio3_matrix.c:1315
harkio_Positions * harkio_Positions_newFromXMLbuffer(char *buffer, int len, char *dtdpath)
コンストラクタ。XMLが格納された文字列へのポインタから、harkio_Positions オブジェクトを生成する
Definition: libharkio3_positions.c:132
harkio_Matrix * harkio_Matrix_fromZip(struct zip *handle, char *path)
[内部用] zip ファイル内のharkio_Matrix_write で書き込んだファイルを読み込む。
Definition: libharkio3_matrix.c:434
harkio_Matrix * harkio_Matrix_emul(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の要素ごとの積を求める。
Definition: libharkio3_matrix.c:1022
int harkio_TransferFunction_setConfig(harkio_TransferFunction *tf, harkio_Config *value)
Setter。harkio_TransferFunction の harkio_Config を設定する
Definition: libharkio3_transferfunction.c:517
int cols
Definition: libharkio3.h:172
multipleType data
Definition: libharkio3.h:173
harkio_Positions * harkio_TransferFunction_getPositions(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の 音源位置を表す harkio_Positions を返す
Definition: libharkio3_transferfunction.c:491
harkio_Matrix * harkio_Matrix_mul(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の積を求める。
Definition: libharkio3_matrix.c:890
harkio_TransferFunction * harkio_TransferFunction_fromFile(char *path, char *signature)
コンストラクタ。与えられたファイルをロードし、構造体を構成する。
Definition: libharkio3_transferfunction.c:112
harkio_Matrix * harkio_Matrix_emap(harkio_Matrix *m, harkio_Matrix_maps *map)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2780
char * type
Definition: libharkio3.h:196
int harkio_Matrix_write(harkio_Matrix *m, char *path)
harkio_Matrix をファイルに書き込む
Definition: libharkio3_matrix.c:2002
harkio_Positions * poses
Definition: libharkio3.h:242
int harkio_TransferFunction_setSepTFs(harkio_TransferFunction *tf, harkio_Matrix **tfs)
Setter。harkio_TransferFunction の音源位置ごとの分離伝達関数を表す harkio_Matrix 配列へのポインタを設定する
Definition: libharkio3_transferfunction.c:700
char * harkio_XML_writeBuffer(harkio_XML *xml)
harkio_XML をバッファに保存する。
Definition: libharkio3_xml.c:320
int numChannels
Definition: libharkio3.h:186
int size
Definition: libharkio3.h:238
int harkio_Position_isEqual(harkio_Position *a, harkio_Position *b)
 2つの harkio_Position が等しいか否かを判定する
Definition: libharkio3_position.c:420
int harkio_Matrix_setValues(harkio_Matrix *m1, harkio_Matrix *m2, int row, int col)
harkio_Matrix の一部を別の harkio_Matrix で上書きする
Definition: libharkio3_matrix.c:1600
int harkio_Matrix_setValueInt32(harkio_Matrix *m, int row, int col, int value)
int32 型の harkio_Matrix の値を設定する
Definition: libharkio3_matrix.c:1267
harkio_Matrix * harkio_Matrix_ecalcCComplex(harkio_Matrix *m, COMPLEX_TYPE value, harkio_Matrix_calcfuncComplex func)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2915
harkio_Matrix * harkio_Matrix_new(char *type, int rows, int cols)
初期化しないコンストラクタ
Definition: libharkio3_matrix.c:32
int harkio_TransferFunction_write(harkio_TransferFunction *tf, char *path, char *signature)
harkio_TransferFunction 構造体の情報をファイルに書き込む
Definition: libharkio3_transferfunction.c:844
void harkio_TransferFunction_delete(harkio_TransferFunction **tf)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_transferfunction.c:339
void harkio_Position_delete(harkio_Position **pos)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_position.c:93
int harkio_XML_writeTail(FILE *outstream)
harkio_Positions をXMLファイルに保存する。
Definition: libharkio3_xml.c:304
int harkio_Position_Convert(harkio_Position *pos, float *coord, enum Coordinate type)
 harkio_Positions の座標を指定した座標系で得る。
Definition: libharkio3_position.c:505
int dim
Definition: libharkio3.h:170
void harkio_Positions_delete(harkio_Positions **pos)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_positions.c:264
harkio_Position * harkio_Position_new(int id, enum Coordinate sys, float *coord, char *path)
コンストラクタ。空の 与えられた座標の POS を返す。
Definition: libharkio3_position.c:38
int harkio_Position_setChannelsUse(harkio_Position *pos, int channels_use)
Setter。harkio_Position の チャンネル使用の有無を更新する。
Definition: libharkio3_position.c:321
int size
Definition: libharkio3.h:194
char * harkio_Matrix_writeBuffer(harkio_Matrix *m, size_t *size)
harkio_Matrix のファイルフォーマットを書き込んだバッファを返す。
Definition: libharkio3_matrix.c:2093
void harkio_Position_print(harkio_Position *pos)
 harkio_Position をテキストで表示する
Definition: libharkio3_position.c:359
harkio_Matrix * harkio_Matrix_add(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の和を求める。
Definition: libharkio3_matrix.c:622
int harkio_Position_setChannels(harkio_Position *pos, const int *channels, const int numChannels)
Setter。harkio_Position の チャンネルを更新する。
Definition: libharkio3_position.c:242
int harkio_Matrix_getValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE *value)
complex 型の harkio_Matrix の値を取り出す
Definition: libharkio3_matrix.c:1458
int * ids
Definition: libharkio3.h:239
int * intdata
Definition: libharkio3.h:159