libharkio3
A File I/O and Data Manipulation Library for HARK
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.00001
38 
42 #define HARKIO_VER "1.3"
43 
47 #define HARKIO_TAG "HARK1.3"
48 
49 
53 enum Coordinate {
56 };
57 
64 };
65 
75 };
76 
80 enum harkio_TFType { loctf , septf };
81 
85 // enum Calculate { Calc_Add , Calc_Sub , Calc_Multi , Calc_Div };
86 
90 enum harkio_DataType { harkio_DataType_INT32 , harkio_DataType_FLOAT32 , harkio_DataType_COMPLEX };
91 enum UseTagType { NON_TAG , USE_TAG , ID_TAG };
92 
96 enum InternalAllocFlag { NO_INTERNAL_ALLOC, INTERNAL_ALLOC };
97 
98 
99 //#ifdef __unix__
100 // #define COMPLEX_TYPE float _Complex
101 typedef float _Complex COMPLEX_TYPE;
102 //#else
103 // #define COMPLEX_TYPE complex<float>
104 //#endif
105 
106 
110 typedef struct {
111  int (*imap)(int);
112  float(*fmap)(float);
113  COMPLEX_TYPE(*cmap)(COMPLEX_TYPE);
115 
116 typedef int (*harkio_Matrix_calcfuncInt32)(int, int);
117 typedef float(*harkio_Matrix_calcfuncFloat32)(float, float);
118 typedef COMPLEX_TYPE(*harkio_Matrix_calcfuncComplex)(COMPLEX_TYPE, COMPLEX_TYPE);
119 
123 #define HARK_DIM 2 //dimention
124 
129 #define HARKIO_LOGLEVEL_ENV_NAME "HARKIO_LOG_LEVEL"
130 
134 #define harkio_Log_setLevel(PrintLevel) harkio_Log_printf_( (enum harkio_Log_logLevel)-1, "", PrintLevel, __func__, __LINE__)
135 
139 #define harkio_Log_printf(LogLevel, message, ...) harkio_Log_printf_(LogLevel, message, 0, __func__, __LINE__, ##__VA_ARGS__)
140 
144 #define MSG_LEN 4192
145 
146 
150 // 引数付きdeprecated()は環境によって非対応のため修正(r7833). Windowsでの動作未確認.
151 #ifdef _MSC_VER
152 #define DEPRECATED(X) __declspec(deprecated(X))
153 #else
154 #define DEPRECATED(X) __attribute__((deprecated))
155 #endif
156 
160 typedef union {
161  int *intdata;
162  float *floatdata;
163  COMPLEX_TYPE *complexdata;
164 } multipleType;
165 
169 typedef struct {
170  char tag[32];
171  char type[32];
172  int dim;
173  int rows;
174  int cols;
176 } harkio_Matrix;
177 
181 typedef struct {
182  int id;
183  enum Coordinate sys;
184  float *coord;
185  char *path;
189  int *channels;
191 
195 typedef struct {
196  int size;
197  int frame;
198  char *type;
200  enum InternalAllocFlag allocflag;
202 
206 typedef struct {
207  char *comment;
209  char *TSPpath;
210  int TSPoffset;
211  int TSPLength;
214  int nfft;
216  int signalMax;
217 } harkio_Config;
218 
239 typedef struct {
240  int size;
241  int *ids;
243  int **neighbors;
245  enum NeighborAlgorithm alg;
247 
251 typedef struct {
255 } harkio_XML;
256 
260 typedef struct {
261  struct zip *handle;
271 
272 
273 
274 #if defined(__cplusplus)
275 extern "C" {
276 #endif
277 
278 /******
279  API declaration
280  ******/
281 // Matrix
282 harkio_Matrix* harkio_Matrix_new(char *type, int rows, int cols);
283 harkio_Matrix* harkio_Matrix_eye(char *type, int size);
284 harkio_Matrix* harkio_Matrix_zeros(char *type, int rows, int cols);
286 harkio_Matrix* harkio_Matrix_ones(char *type, int rows, int cols);
288 harkio_Matrix* harkio_Matrix_fromZip(struct zip *handle, char *path);
290 
294 int harkio_Matrix_write(harkio_Matrix *m, char *path);
295 char* harkio_Matrix_writeBuffer(harkio_Matrix *m, size_t *size);
296 size_t harkio_Matrix_size(harkio_Matrix *m, int *size);
297 
298 int harkio_Matrix_replaceC(harkio_Matrix *m, char *path, int rowidx);
299 
304 harkio_Matrix* harkio_Matrix_sumRow(harkio_Matrix *matrix);
305 harkio_Matrix* harkio_Matrix_sumCol(harkio_Matrix *matrix);
306 harkio_Matrix* harkio_Matrix_sumAll(harkio_Matrix *matrix);
307 
308 harkio_Matrix* harkio_Matrix_sum(harkio_Matrix **matrix , int num);
309 
313 harkio_Matrix* harkio_Matrix_esquare(harkio_Matrix *m);
314 harkio_Matrix* harkio_Matrix_eabs(harkio_Matrix *m);
315 harkio_Matrix* harkio_Matrix_econj(harkio_Matrix *m);
316 harkio_Matrix* harkio_Matrix_etanh(harkio_Matrix *m);
317 harkio_Matrix* harkio_Matrix_ecosh(harkio_Matrix *m);
318 harkio_Matrix* harkio_Matrix_elog(harkio_Matrix *m);
319 harkio_Matrix* harkio_Matrix_elog10(harkio_Matrix *m);
320 harkio_Matrix* harkio_Matrix_ereal(harkio_Matrix *m);
321 harkio_Matrix* harkio_Matrix_eimag(harkio_Matrix *m);
322 harkio_Matrix* harkio_Matrix_emulCInt32(harkio_Matrix *m, int value);
323 harkio_Matrix* harkio_Matrix_emulCFloat32(harkio_Matrix *m, float value);
324 harkio_Matrix* harkio_Matrix_emulCComplex(harkio_Matrix *m, COMPLEX_TYPE value);
325 harkio_Matrix* harkio_Matrix_edivCInt32(harkio_Matrix *m, int value);
326 harkio_Matrix* harkio_Matrix_edivCFloat32(harkio_Matrix *m, float value);
327 harkio_Matrix* harkio_Matrix_edivCComplex(harkio_Matrix *m, COMPLEX_TYPE value);
328 harkio_Matrix* harkio_Matrix_epowerCInt32(harkio_Matrix *m, int value);
332 harkio_Matrix* harkio_Matrix_ecalcCInt32(harkio_Matrix *m, int value, harkio_Matrix_calcfuncInt32 func);
333 harkio_Matrix* harkio_Matrix_ecalcCFloat32(harkio_Matrix *m, float value, harkio_Matrix_calcfuncFloat32 func);
334 harkio_Matrix* harkio_Matrix_ecalcCComplex(harkio_Matrix *m, COMPLEX_TYPE value, harkio_Matrix_calcfuncComplex func);
335 harkio_Matrix* harkio_Matrix_reshape(harkio_Matrix *m, int rows, int cols);
338 
339 int harkio_Matrix_setValueInt32(harkio_Matrix *m, int row, int col, int value);
340 int harkio_Matrix_getValueInt32(harkio_Matrix *m, int row, int col, int *value);
341 int harkio_Matrix_setValueFloat32(harkio_Matrix *m, int row, int col, float value);
342 int harkio_Matrix_getValueFloat32(harkio_Matrix *m, int row, int col, float *value);
343 int harkio_Matrix_setValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE value);
344 int harkio_Matrix_getValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE *value);
345 harkio_Matrix* harkio_Matrix_getValues(harkio_Matrix *matrix,int rowFrom ,int rowTo,int colFrom,int colTo);
346 int harkio_Matrix_setValues(harkio_Matrix *m1 , harkio_Matrix *m2 , int row , int col);
349 // int harkio_Complex_calc(COMPLEX_TYPE *value , COMPLEX_TYPE valuea , COMPLEX_TYPE valueb , enum Calculate calc);
350 int harkio_CheckType(char *type);
351 
352 
353 // Config
355 harkio_Config* harkio_Config_copy(harkio_Config *cfg);
357 
360 int harkio_Config_getTSPoffset(harkio_Config *cfg);
361 int harkio_Config_getPeakSearchFrom(harkio_Config *cfg);
362 int harkio_Config_getPeakSearchTo(harkio_Config *cfg);
363 int harkio_Config_getNfft(harkio_Config *cfg);
364 int harkio_Config_getSamplingRate(harkio_Config *cfg);
365 int harkio_Config_getTSPLength(harkio_Config *cfg);
366 int harkio_Config_getSignalMax(harkio_Config *cfg);
367 
369 
370 int harkio_Config_setSynchronousAverage(harkio_Config *cfg, int value);
371 int harkio_Config_setTSPpath(harkio_Config *cfg, const char *value);
372 int harkio_Config_setTSPoffset(harkio_Config *cfg, int value);
373 int harkio_Config_setPeakSearchFrom(harkio_Config *cfg, int value);
374 int harkio_Config_setPeakSearchTo(harkio_Config *cfg, int value);
375 int harkio_Config_setNfft(harkio_Config *cfg, int value);
376 int harkio_Config_setComment(harkio_Config *cfg, const char *value);
377 int harkio_Config_setSamplingRate(harkio_Config *cfg, int value);
378 int harkio_Config_setTSPlength(harkio_Config *cfg, int value);
379 int harkio_Config_setSignalMax(harkio_Config *cfg, int value);
380 
381 int harkio_Config_isEqual(harkio_Config *a, harkio_Config *b);
382 int harkio_Config_isEqual(harkio_Config *a, harkio_Config *b);
383 void harkio_Config_print(harkio_Config *cfg);
384 char* harkio_Config_printBuffer(harkio_Config *cfg);
385 
386 // Position
387 harkio_Position* harkio_Position_new(int id, enum Coordinate sys, float *coord, char *path);
390 char* harkio_Position_printBuffer(harkio_Position* pos);
391 
393 int harkio_Position_setPosition(harkio_Position* pos, enum Coordinate sys, float *coord);
397 int harkio_Position_Convert(harkio_Position *pos, float *coord, enum Coordinate type);
398 float harkio_Position_convToRadian(float degree);
399 float harkio_Position_convToDegree(float radian);
402 int harkio_Position_setChannels(harkio_Position* pos , const int *channels, const int numChannels);
403 int harkio_Position_setNumChannels(harkio_Position* pos , int numChannels);
404 int harkio_Position_setChannelsUse(harkio_Position* pos , int channels_use);
405 
406 
407 // Positions
408 harkio_Positions* harkio_Positions_new(char *type, int frame, int size, harkio_Position **pos);
409 harkio_Positions* harkio_Positions_newFromXMLbuffer(char *buffer, int len, char *dtdpath);
416 int harkio_Positions_removeByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance);
418 harkio_Position* harkio_Positions_getByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance);
422 
423 
424 
425 // Neighbors
429 
431 int harkio_Neighbors_getNeighbors(harkio_Neighbors *nbrs, int id, int *numNeighbors, int **neighbors);
432 int harkio_Neighbors_append(harkio_Neighbors *nbrs, int id, int numNeighbors, int *neighbors);
435 
436 int harkio_Neighbors_Algorithms_NearestNeighbor(harkio_Neighbors *nbrs, int n, float thresh);
438 
440 
441 // utils
442 float euclidDistance(harkio_Position *pos_a , harkio_Position *pos_b , int length);
443 
444 
445 // XML
447 harkio_XML* harkio_XML_newFromXML(char *xmlpath, char *dtdpath);
448 harkio_XML* harkio_XML_newFromXMLbuffer(char *buffer, int strlen, char *dtdpath);
450 void harkio_XML_delete(harkio_XML **xml);
451 
452 harkio_Config* harkio_XML_getConfig(harkio_XML *xml);
453 
454 int harkio_XML_write(harkio_XML *xml, FILE *outstream);
455 int harkio_XML_writeHead(FILE *outstream);
456 int harkio_XML_writePositions(harkio_Positions *poses, FILE *outstream);
457 int harkio_XML_writeTail(FILE *outstream);
458 
459 harkio_Neighbors *harkio_XML_getNeighbors(harkio_XML *xml);
460 harkio_Positions *harkio_XML_getPositions(harkio_XML *xml);
462 
463 
464 // TF
466 harkio_TransferFunction* harkio_TransferFunction_fromFile(char *path, char *signature);
470 
471 int harkio_TransferFunction_write(harkio_TransferFunction *tf, char *path, char *signature);
472 int harkio_TransferFunction_write_toDirectory(harkio_TransferFunction *tf, char *path, char *signature);
473 //int harkio_TransferFunction_readTFs(harkio_TransferFunction *tf);
474 
479 
484 
491 
494 DEPRECATED("use 'harkio_Compat_TransferFunction_readlibharkio2'") int libharkio3_TransferFunction_readlibhakio2(harkio_TransferFunction **tf, char *loctfpath , char *septfpath);
495 DEPRECATED("use 'harkio_Compat_SeparationMatrix_readlibharkio2'") int libharkio3_SeparationMatrix_readlibhakio2(harkio_TransferFunction **tf, char *sepmatpath , char *tfzippath);
496 
497 
498 
499 
500 // Log
501 void harkio_Log_printf_(enum harkio_Log_logLevel LogLevel, char *message , int PrintLevel, const char *func, int line, ...);
502 void harkio_Log_FileOpenFailed(char *filename);
503 void harkio_Log_WrongValue(char *valuename, char *reason);
504 void harkio_Log_NullPointer(char *valuename);
505 //void harkio_Log_FuncStart(char *funcname);
506 
507 
508 #if defined(__cplusplus)
509 }
510 #endif
511 
512 #endif
harkio_DataType
harkio_Matrix の型を表す
Definition: libharkio3.h:90
harkio_Matrix * harkio_Matrix_fromFile(char *path)
harkio_Matrix_write で書き込んだファイルを読み込む。
Definition: libharkio3_matrix.c:350
harkio_Position * harkio_Position_copy(harkio_Position *p)
 harkio_Position をコピーする
Definition: libharkio3_position.c:518
int harkio_Positions_isEqual(harkio_Positions *a, harkio_Positions *b)
 2つの harkio_Positions が等しいか否かを判定する
Definition: libharkio3_positions.c:715
harkio_Neighbors * harkio_Neighbors_copy(harkio_Neighbors *poses)
harkio_Neighbors の内容を コピーする
Definition: libharkio3_neighbors.c:630
Definition: libharkio3.h:73
int harkio_Neighbors_append(harkio_Neighbors *nbrs, int id, int numNeighbors, int *neighbors)
新しい隣接関係を追加する。与えられた ID に隣接関係がすでに定義されていれば追加し、定義が無ければ新し�...
Definition: libharkio3_neighbors.c:286
harkio_Position ** pos
Definition: libharkio3.h:199
int harkio_Matrix_setValueFloat32(harkio_Matrix *m, int row, int col, float value)
float32 型の harkio_Matrix の値を設定する
Definition: libharkio3_matrix.c:1262
harkio_Log_logLevel
harkio_Log で、メッセージのログがどのレベルかを表す。
Definition: libharkio3.h:69
char * harkio_Positions_getType(harkio_Positions *poses)
Getter。harkio_Positions のタイプを返す。
Definition: libharkio3_positions.c:380
harkio_Positions * poses
Definition: libharkio3.h:262
int harkio_Position_getSys(harkio_Position *pos)
Getter。harkio_Position の 座標系を返す。
Definition: libharkio3_position.c:156
int harkio_Matrix_isEqual(harkio_Matrix *a, harkio_Matrix *b)
2つの harkio_Matrix オブジェクトが等しいかどうかを判定する
Definition: libharkio3_matrix.c:1676
InternalAllocFlag
保持メモリの割当て状態を管理するフラグ(内部用)
Definition: libharkio3.h:96
harkio_Matrix * harkio_Matrix_zeros(char *type, int rows, int cols)
要素が全てゼロの行列を生成するコンストラクタ
Definition: libharkio3_matrix.c:107
int * numNeighbors
Definition: libharkio3.h:242
int harkio_TransferFunction_write_toDirectory(harkio_TransferFunction *tf, char *path, char *signature)
harkio_TransferFunction 構造体の情報をファイルに書き込む
Definition: libharkio3_transferfunction.c:1125
harkio_Positions の隣接関係を表す構造体。自分を含む。s
Definition: libharkio3.h:239
harkio_Matrix * harkio_Matrix_getDiag(harkio_Matrix *m)
対角成分を取り出す
Definition: libharkio3_matrix.c:2215
int harkio_Matrix_getValueInt32(harkio_Matrix *m, int row, int col, int *value)
int32 型の harkio_Matrix の値を取り出す
Definition: libharkio3_matrix.c:1151
int internal_locsize
Definition: libharkio3.h:268
int harkio_Matrix_replaceC(harkio_Matrix *m, char *path, int rowidx)
harkio_Matrix_write で書き込んだファイルを読み込み、行を書き換える
Definition: libharkio3_matrix.c:1971
int harkio_Matrix_setValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE value)
complex 型の harkio_Matrix の値を設定する
Definition: libharkio3_matrix.c:1300
float * harkio_Position_getPosition(harkio_Position *pos)
Getter。harkio_Position の座標を返す。
Definition: libharkio3_position.c:118
harkio_Matrix * harkio_Matrix_reshape(harkio_Matrix *m, int rows, int cols)
行列の並び順を変更する
Definition: libharkio3_matrix.c:2825
int harkio_XML_write(harkio_XML *xml, FILE *outstream)
harkio_XML をファイルに保存する。
Definition: libharkio3_xml.c:230
int harkio_Position_setPosition(harkio_Position *pos, enum Coordinate sys, float *coord)
Setter。harkio_Position の 座標を更新する。
Definition: libharkio3_position.c:177
harkio_Positions * harkio_TransferFunction_getMicrophones(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の マイク位置を表す harkio_Positions を返す
Definition: libharkio3_transferfunction.c:653
int harkio_CheckType(char *type)
[内部用] harkio_Matrix の型判定
Definition: libharkio3_matrix.c:2121
harkio_XML * harkio_XML_newFromXMLbuffer(char *buffer, int strlen, char *dtdpath)
コンストラクタ。XMLが格納された文字列へのポインタから、harkio_XML オブジェクトを生成する ...
Definition: libharkio3_xml.c:122
int libharkio3_TransferFunction_readlibhakio2(harkio_TransferFunction **arg_tf, char *loctfpath, char *septfpath)
harkio2フォーマットの伝達関数ファイルを読み込み、構造体を構成する。(deprecated)
Definition: libharkio3_conversion.c:176
Definition: libharkio3.h:70
位置を表す構造体。
Definition: libharkio3.h:181
Definition: libharkio3.h:74
harkio_Matrix * harkio_Matrix_ones(char *type, int rows, int cols)
要素が全て1の行列を生成するコンストラクタ
Definition: libharkio3_matrix.c:168
int harkio_TransferFunction_appendLocTF(harkio_TransferFunction *tf, harkio_Matrix *tfs)
harkio_TransferFunction の定位伝達関数を表す harkio_Matrix 配列に要素を追加する。 ...
Definition: libharkio3_transferfunction.c:895
int samplingRate
Definition: libharkio3.h:215
harkio_Config * cfg
Definition: libharkio3.h:254
int synchronousAverage
Definition: libharkio3.h:208
int rows
Definition: libharkio3.h:173
Definition: libharkio3.h:72
伝達関数ファイルの XML (位置、隣接関係、設定) の読み書きのための構造体
Definition: libharkio3.h:251
harkio_Position * harkio_Positions_getByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance)
Getter。harkio_Positions が持つ harkio_Position のから、与えられた位置に近いものを返す。 ...
Definition: libharkio3_positions.c:326
harkio_Neighbors * nbrs
Definition: libharkio3.h:265
int harkio_Config_getSynchronousAverage(harkio_Config *cfg)
Getter。harkio_Config の同期加算回数を返す
Definition: libharkio3_config.c:76
int harkio_Positions_removeById(harkio_Positions *poses, int id)
 harkio_Positions から、与えられた ID の harkio_Position を削除する
Definition: libharkio3_positions.c:520
int channelsUse
Definition: libharkio3.h:187
harkio_TransferFunction * harkio_TransferFunction_new(void)
コンストラクタ。空の伝達関数構造体 harkio_TransferFunctionを作成する。
Definition: libharkio3_transferfunction.c:36
char * comment
Definition: libharkio3.h:207
enum NeighborAlgorithm harkio_Neighbors_getNeighborAlgorithm(harkio_Neighbors *nbs)
Getter. harkio_Neighbors の近接関係計算アルゴリズムを返す。
Definition: libharkio3_neighbors.c:212
harkio_Position * harkio_Positions_getById(harkio_Positions *poses, int id)
Getter。harkio_Positions が持つ harkio_Position のから、与えられた id と同じものを返す。 ...
Definition: libharkio3_positions.c:293
harkio_Positions * mics
Definition: libharkio3.h:263
char * harkio_Config_getComment(harkio_Config *cfg)
Getter。harkio_Config のコメントを返す
Definition: libharkio3_config.c:62
harkio_Neighbors * nbrs
Definition: libharkio3.h:253
int peakSearchFrom
Definition: libharkio3.h:212
int harkio_Neighbors_Algorithms_NearestNeighbor(harkio_Neighbors *nbrs, int n, float thresh)
近接関係計算アルゴリズムの実装。近傍をクラスタリングする方法。
Definition: libharkio3_neighbors.c:398
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:1315
int harkio_Neighbors_calcNeighbors(harkio_Neighbors *nbrs, enum NeighborAlgorithm alg,...)
harkio_Neighbors に登録されている位置の近接関係を計算する。
Definition: libharkio3_neighbors.c:240
struct zip * handle
Definition: libharkio3.h:261
int peakSearchTo
Definition: libharkio3.h:213
harkio_Neighbors * harkio_Neighbors_new(harkio_Positions *poses)
コンストラクタ。近接関係を表すオブジェクトを生成する。
Definition: libharkio3_neighbors.c:28
void harkio_Neighbors_print(harkio_Neighbors *nbrs)
harkio_Neighbors の内容を stderr に表示する。
Definition: libharkio3_neighbors.c:537
harkio_TransferFunction * harkio_Compat_TransferFunction_readlibharkio2(char *loctfpath, char *septfpath)
コンストラクタ。harkio2フォーマットの伝達関数ファイルを読み込み、構造体を構成する。 ...
Definition: libharkio3_conversion.c:144
harkio_Matrix * harkio_Matrix_sum(harkio_Matrix **matrix, int num)
複数 harkio_Matrix の要素ごとの総和を求める
Definition: libharkio3_matrix.c:1063
COMPLEX_TYPE * complexdata
Definition: libharkio3.h:163
int TSPLength
Definition: libharkio3.h:211
harkio_Matrix ** loctfs
Definition: libharkio3.h:266
harkio_Matrix * harkio_Matrix_getValues(harkio_Matrix *matrix, int rowFrom, int rowTo, int colFrom, int colTo)
harkio_Matrix の部分行列を取り出す
Definition: libharkio3_matrix.c:1377
int frame
Definition: libharkio3.h:197
harkio_TransferFunction * harkio_TransferFunction_fromDirectory(char *path, char *signature)
コンストラクタ。与えられたディレクトリに存在するファイルをロードし、構造体を構成する。 ...
Definition: libharkio3_transferfunction.c:334
void harkio_Positions_print(harkio_Positions *pos)
 harkio_Positions をテキストで表示する
Definition: libharkio3_positions.c:651
harkio_Config * harkio_Config_new(void)
コンストラクタ。空の harkio_Config を作成する。
Definition: libharkio3_config.c:21
harkio_Matrix * harkio_TransferFunction_getTFByPos(harkio_TransferFunction *tf, harkio_Position *pos, float tolerance, enum harkio_TFType tf_type)
harkio_TransferFunction 構造体に含まれる伝達関数群から特定の伝達関数を取り出す
Definition: libharkio3_transferfunction.c:1261
harkio_XML * harkio_XML_new(void)
コンストラクタ。新たな harkio_XML オブジェクトを生成する。
Definition: libharkio3_xml.c:43
伝達関数そのものを表す構造体
Definition: libharkio3.h:260
int harkio_TransferFunction_setLocTFs(harkio_TransferFunction *tf, harkio_Matrix **tfs)
Setter。harkio_TransferFunction の音源位置ごとの定位伝達関数を表す harkio_Matrix 配列へのポインタを設...
Definition: libharkio3_transferfunction.c:825
harkio_Positions * harkio_Positions_copy(harkio_Positions *pos)
 harkio_Positions をコピーする
Definition: libharkio3_positions.c:617
int TSPoffset
Definition: libharkio3.h:210
harkio_Matrix * harkio_Matrix_eye(char *type, int size)
単位行列生成するコンストラクタ
Definition: libharkio3_matrix.c:293
harkio_Positions * poses
Definition: libharkio3.h:252
harkio_XML * harkio_XML_newFromData(harkio_Positions *ps, harkio_Neighbors *nbrs, harkio_Config *cfg)
コンストラクタ。harkio_XML のメンバへのポインタを受け取って、新たな harkio_XML オブジェクトを生成する...
Definition: libharkio3_xml.c:103
int harkio_Positions_removeByCoord(harkio_Positions *poses, enum Coordinate sys, float *coord, float tolerance)
 harkio_Positions から、与えられた座標の harkio_Position を削除する
Definition: libharkio3_positions.c:580
harkio_Neighbors * harkio_TransferFunction_getNeighbors(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の harkio_Neighbor を返す
Definition: libharkio3_transferfunction.c:631
harkio_TransferFunction * harkio_Compat_SeparationMatrix_readlibharkio2(char *sepmatpath, char *tfzippath)
コンストラクタ。harkio2フォーマットの分離行列ファイルを読み込み、構造体を構成する。 ...
Definition: libharkio3_conversion.c:159
位置の集合を表す構造体。
Definition: libharkio3.h:195
harkio_Matrix内部用。
Definition: libharkio3.h:160
harkio_Matrix ** septfs
Definition: libharkio3.h:267
int harkio_Positions_getFrame(harkio_Positions *poses)
Getter。harkio_Positions のフレーム番号を返す。
Definition: libharkio3_positions.c:424
harkio_XML * harkio_XML_newFromXML(char *xmlpath, char *dtdpath)
コンストラクタ。ファイルを読み込んで、新たな harkio_XML オブジェクトを生成する。
Definition: libharkio3_xml.c:61
Definition: libharkio3.h:55
伝達関数などの、行列を表す構造体。
Definition: libharkio3.h:169
harkio_Matrix * harkio_Matrix_copy(harkio_Matrix *m)
harkio_Matrix をコピーする。
Definition: libharkio3_matrix.c:610
harkio_Matrix * harkio_Matrix_makeDiag(harkio_Matrix *m)
列ベクトルを対角成分にもつ正方行列を返す
Definition: libharkio3_matrix.c:2260
harkio_Positions * harkio_Positions_new(char *type, int frame, int size, harkio_Position **pos)
コンストラクタ。空の位置セットのオブジェクト harkio_Positions を作成する。
Definition: libharkio3_positions.c:38
size_t harkio_Matrix_size(harkio_Matrix *m, int *size)
harkio_Matrix のサイズを取得する
Definition: libharkio3_matrix.c:1777
Definition: libharkio3.h:63
float harkio_Position_convToDegree(float radian)
 内部用関数。 ラジアン(radian)から角度(degree)に変換
Definition: libharkio3_position.c:601
char * TSPpath
Definition: libharkio3.h:209
int harkio_Position_getID(harkio_Position *pos)
Getter。harkio_Position の ID を返す。
Definition: libharkio3_position.c:137
int id
Definition: libharkio3.h:182
float * coord
Definition: libharkio3.h:184
Coordinate
harkio_Positions で座標軸を表す。
Definition: libharkio3.h:53
int harkio_Neighbors_getSize(harkio_Neighbors *nbs)
Getter. harkio_Neighbors に登録されている harkio_Positions の長さ
Definition: libharkio3_neighbors.c:191
void harkio_Matrix_print(harkio_Matrix *m)
harkio_Matrix を表示する
Definition: libharkio3_matrix.c:1563
void harkio_Matrix_delete(harkio_Matrix **m)
デストラクタ。
Definition: libharkio3_matrix.c:561
int nfft
Definition: libharkio3.h:214
int harkio_TransferFunction_setMicrophones(harkio_TransferFunction *tf, harkio_Positions *value)
Setter。harkio_TransferFunction のマイク位置に対応する harkio_Positions を設定する ...
Definition: libharkio3_transferfunction.c:761
int harkio_XML_writeHead(FILE *outstream)
harkio_Positions をXMLファイルに保存する。
Definition: libharkio3_xml.c:267
int ** neighbors
Definition: libharkio3.h:243
Definition: libharkio3.h:62
void harkio_XML_delete(harkio_XML **xml)
デストラクタ。harkio_XML のメモリを解放する。
Definition: libharkio3_xml.c:165
int internal_sepsize
Definition: libharkio3.h:269
harkio_Matrix * harkio_Matrix_ecalcCInt32(harkio_Matrix *m, int value, harkio_Matrix_calcfuncInt32 func)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2695
harkio_TFType
伝達関数が定位用か分離用かを表す。(内部用)
Definition: libharkio3.h:80
int harkio_TransferFunction_setPositions(harkio_TransferFunction *tf, harkio_Positions *value)
Setter。harkio_TransferFunction の音源位置に対応する harkio_Positions を設定する
Definition: libharkio3_transferfunction.c:793
int signalMax
Definition: libharkio3.h:216
harkio_Matrix * harkio_Matrix_ctranspose(harkio_Matrix *m)
行列を複素共役転置する
Definition: libharkio3_matrix.c:2943
harkio_Matrix * harkio_Matrix_ediv(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の要素ごとの商を求める。
Definition: libharkio3_matrix.c:2141
float * floatdata
Definition: libharkio3.h:162
harkio_Matrix * harkio_Matrix_transpose(harkio_Matrix *m)
行列のを転置する
Definition: libharkio3_matrix.c:2889
int harkio_Positions_getSize(harkio_Positions *poses)
Getter。harkio_Positions の harkio_Position の数を返す。
Definition: libharkio3_positions.c:402
char * harkio_Matrix_getTag(harkio_Matrix *xml)
harkio_Matrix のタグを取得する
Definition: libharkio3_matrix.c:1538
伝達関数の計測条件などの一般的な情報を表す構造体
Definition: libharkio3.h:206
char * harkio_Positions_printBuffer(harkio_Positions *pos)
harkio_Positions の文字列表現を格納したバッファを返す。
Definition: libharkio3_positions.c:684
#define DEPRECATED(X)
deprecated関数定義用.ソース内で関数を使用している場合に,コンパイル時警告を出す属性を設定.
Definition: libharkio3.h:154
harkio_Matrix_map で要素ごとの処理を行うための関数ポインタ群。
Definition: libharkio3.h:110
float harkio_Position_convToRadian(float degree)
 内部用関数。 角度(degree)からラジアン(radian)に変換
Definition: libharkio3_position.c:592
int harkio_Position_setNumChannels(harkio_Position *pos, int numChannels)
Setter。harkio_Position の チャンネル数を更新する。
Definition: libharkio3_position.c:249
float euclidDistance(harkio_Position *pos_a, harkio_Position *pos_b, int length)
内部用関数。二つの harkio_Position の距離を求める
Definition: libharkio3_neighbors.c:484
harkio_Matrix * harkio_Matrix_vstack(harkio_Matrix *src, harkio_Matrix *stack)
srcにstackの内容を縦方向(rows方向)にスタックする。この際、srcの容量はstack分拡張される。 ...
Definition: libharkio3_matrix.c:228
int harkio_Neighbors_isEqual(harkio_Neighbors *a, harkio_Neighbors *b)
harkio_Neighbors が等しいかどうかを比較する。
Definition: libharkio3_neighbors.c:567
int harkio_Positions_append(harkio_Positions *poses, harkio_Position *pos)
 harkio_Positions に新たな harkio_Position を追加する。
Definition: libharkio3_positions.c:454
void harkio_Config_delete(harkio_Config **cfg)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_config.c:34
char * harkio_Matrix_printBuffer(harkio_Matrix *m)
harkio_Matrix の文字列表現を格納したバッファを返す。
Definition: libharkio3_matrix.c:1601
harkio_Matrix * harkio_Matrix_epowerCFloat32(harkio_Matrix *m, float value)
行列を定数でべき乗する
Definition: libharkio3_matrix.c:2624
harkio_Matrix * harkio_Matrix_ecalcCFloat32(harkio_Matrix *m, float value, harkio_Matrix_calcfuncFloat32 func)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2738
harkio_TransferFunction * harkio_TransferFunction_fromData(harkio_Positions *poses, harkio_Positions *mics, harkio_Config *cfg, harkio_Neighbors *nbrs)
コンストラクタ。与えられた 音源位置群、マイク位置群、コンフィグ、隣接音源位置から構造体を生成する。 ...
Definition: libharkio3_transferfunction.c:66
int harkio_TransferFunction_appendSepTF(harkio_TransferFunction *tf, harkio_Matrix *tfs)
harkio_TransferFunction の分離伝達関数を表す harkio_Matrix 配列に要素を追加する。 ...
Definition: libharkio3_transferfunction.c:942
harkio_Matrix * data
Definition: libharkio3.h:186
harkio_Config * cfg
Definition: libharkio3.h:264
Definition: libharkio3.h:71
int harkio_Neighbors_getNeighbors(harkio_Neighbors *nbrs, int id, int *numNeighbors, int **neighbors)
getter。与えられた id の近接 id を返す。[]
Definition: libharkio3_neighbors.c:142
int harkio_TransferFunction_setNeighbors(harkio_TransferFunction *tf, harkio_Neighbors *value)
Setter。harkio_TransferFunction の harkio_Neighbors を設定する
Definition: libharkio3_transferfunction.c:729
char * path
Definition: libharkio3.h:185
harkio_Config * harkio_TransferFunction_getConfig(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の harkio_Config を返す
Definition: libharkio3_transferfunction.c:609
harkio_Matrix * harkio_Matrix_sub(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の差を求める。
Definition: libharkio3_matrix.c:788
char * harkio_Config_getTSPpath(harkio_Config *cfg)
Getter。harkio_Config の TSP 信号のパスを返す
Definition: libharkio3_config.c:89
int libharkio3_SeparationMatrix_readlibhakio2(harkio_TransferFunction **arg_tf, char *sepmatpath, char *septfzippath)
harkio2フォーマットの分離行列ファイルを読み込み、構造体を構成する。(deprecated)
Definition: libharkio3_conversion.c:186
Definition: libharkio3.h:54
int harkio_XML_writePositions(harkio_Positions *poses, FILE *outstream)
harkio_Positions をXMLファイルに保存する。
Definition: libharkio3_xml.c:249
harkio_Matrix * harkio_Matrix_epowerCComplex(harkio_Matrix *m, COMPLEX_TYPE value)
行列を定数でべき乗する
Definition: libharkio3_matrix.c:2636
int * channels
Definition: libharkio3.h:189
void harkio_Neighbors_delete(harkio_Neighbors **nbrs)
デストラクタ。harkio_Neighbors のメモリを解放する。
Definition: libharkio3_neighbors.c:97
int harkio_Matrix_getValueFloat32(harkio_Matrix *m, int row, int col, float *value)
float32 型の harkio_Matrix の値を取り出す
Definition: libharkio3_matrix.c:1225
harkio_Positions * harkio_Positions_newFromXMLbuffer(char *buffer, int len, char *dtdpath)
コンストラクタ。XMLが格納された文字列へのポインタから、harkio_Positions オブジェクトを生成する ...
Definition: libharkio3_positions.c:123
harkio_Matrix * harkio_Matrix_fromZip(struct zip *handle, char *path)
[内部用] zip ファイル内のharkio_Matrix_write で書き込んだファイルを読み込む。
Definition: libharkio3_matrix.c:453
harkio_Matrix * harkio_Matrix_emul(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の要素ごとの積を求める。
Definition: libharkio3_matrix.c:987
int harkio_TransferFunction_setConfig(harkio_TransferFunction *tf, harkio_Config *value)
Setter。harkio_TransferFunction の harkio_Config を設定する
Definition: libharkio3_transferfunction.c:698
int cols
Definition: libharkio3.h:174
multipleType data
Definition: libharkio3.h:175
harkio_Positions * harkio_TransferFunction_getPositions(harkio_TransferFunction *tf)
Getter。harkio_TransferFunction の 音源位置を表す harkio_Positions を返す
Definition: libharkio3_transferfunction.c:675
harkio_Matrix * harkio_Matrix_mul(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の積を求める。
Definition: libharkio3_matrix.c:868
harkio_TransferFunction * harkio_TransferFunction_fromFile(char *path, char *signature)
コンストラクタ。与えられたファイルをロードし、構造体を構成する。
Definition: libharkio3_transferfunction.c:106
harkio_Matrix * harkio_Matrix_emap(harkio_Matrix *m, harkio_Matrix_maps *map)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2649
char * type
Definition: libharkio3.h:198
int harkio_Matrix_write(harkio_Matrix *m, char *path)
harkio_Matrix をファイルに書き込む
Definition: libharkio3_matrix.c:1822
harkio_Positions * poses
Definition: libharkio3.h:244
int harkio_TransferFunction_setSepTFs(harkio_TransferFunction *tf, harkio_Matrix **tfs)
Setter。harkio_TransferFunction の音源位置ごとの分離伝達関数を表す harkio_Matrix 配列へのポインタを設...
Definition: libharkio3_transferfunction.c:860
char * harkio_XML_writeBuffer(harkio_XML *xml)
harkio_XML をバッファに保存する。
Definition: libharkio3_xml.c:296
int numChannels
Definition: libharkio3.h:188
int size
Definition: libharkio3.h:240
int harkio_Position_isEqual(harkio_Position *a, harkio_Position *b)
 2つの harkio_Position が等しいか否かを判定する
Definition: libharkio3_position.c:362
int harkio_Matrix_setValues(harkio_Matrix *m1, harkio_Matrix *m2, int row, int col)
harkio_Matrix の一部を別の harkio_Matrix で上書きする
Definition: libharkio3_matrix.c:1460
int harkio_Matrix_setValueInt32(harkio_Matrix *m, int row, int col, int value)
int32 型の harkio_Matrix の値を設定する
Definition: libharkio3_matrix.c:1188
harkio_Matrix * harkio_Matrix_ecalcCComplex(harkio_Matrix *m, COMPLEX_TYPE value, harkio_Matrix_calcfuncComplex func)
行列の各要素を関数で写像する
Definition: libharkio3_matrix.c:2781
harkio_Matrix * harkio_Matrix_new(char *type, int rows, int cols)
初期化しないコンストラクタ
Definition: libharkio3_matrix.c:28
int harkio_TransferFunction_write(harkio_TransferFunction *tf, char *path, char *signature)
harkio_TransferFunction 構造体の情報をファイルに書き込む
Definition: libharkio3_transferfunction.c:995
void harkio_TransferFunction_delete(harkio_TransferFunction **tf)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_transferfunction.c:542
void harkio_Position_delete(harkio_Position **pos)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_position.c:83
int harkio_XML_writeTail(FILE *outstream)
harkio_Positions をXMLファイルに保存する。
Definition: libharkio3_xml.c:281
int harkio_Position_Convert(harkio_Position *pos, float *coord, enum Coordinate type)
 harkio_Positions の座標を指定した座標系で得る。
Definition: libharkio3_position.c:438
int dim
Definition: libharkio3.h:172
void harkio_Positions_delete(harkio_Positions **pos)
デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。
Definition: libharkio3_positions.c:255
harkio_Position * harkio_Position_new(int id, enum Coordinate sys, float *coord, char *path)
コンストラクタ。空の 与えられた座標の POS を返す。
Definition: libharkio3_position.c:35
int harkio_Position_setChannelsUse(harkio_Position *pos, int channels_use)
Setter。harkio_Position の チャンネル使用の有無を更新する。
Definition: libharkio3_position.c:278
int size
Definition: libharkio3.h:196
char * harkio_Matrix_writeBuffer(harkio_Matrix *m, size_t *size)
harkio_Matrix のファイルフォーマットを書き込んだバッファを返す。
Definition: libharkio3_matrix.c:1862
void harkio_Position_print(harkio_Position *pos)
 harkio_Position をテキストで表示する
Definition: libharkio3_position.c:306
harkio_Matrix * harkio_Matrix_add(harkio_Matrix *a, harkio_Matrix *b)
2 つの harkio_Matrix の和を求める。
Definition: libharkio3_matrix.c:629
int harkio_Position_setChannels(harkio_Position *pos, const int *channels, const int numChannels)
Setter。harkio_Position の チャンネルを更新する。
Definition: libharkio3_position.c:207
int harkio_Matrix_getValueComplex(harkio_Matrix *m, int row, int col, COMPLEX_TYPE *value)
complex 型の harkio_Matrix の値を取り出す
Definition: libharkio3_matrix.c:1338
int * ids
Definition: libharkio3.h:241
int * intdata
Definition: libharkio3.h:161