libharkio3
A File I/O and Data Manipulation Library for HARK
Functions
libharkio3_neighbors.c File Reference

harkio_Neighbor の API 群。 近接 Position の計算・取り出し・表現などを行う。 More...

#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <math.h>
#include <float.h>
#include "libharkio3.h"
Include dependency graph for libharkio3_neighbors.c:

Functions

harkio_Neighborsharkio_Neighbors_new (harkio_Positions *poses)
 コンストラクタ。近接関係を表すオブジェクトを生成する。 More...
 
void harkio_Neighbors_delete (harkio_Neighbors **nbrs)
 デストラクタ。harkio_Neighbors のメモリを解放する。 More...
 
int harkio_Neighbors_getNeighbors (harkio_Neighbors *nbrs, int id, int *numNeighbors, int **neighbors)
 getter。与えられた id の近接 id を返す。[] More...
 
int harkio_Neighbors_getSize (harkio_Neighbors *nbs)
 Getter. harkio_Neighbors に登録されている harkio_Positions の長さ More...
 
enum NeighborAlgorithm harkio_Neighbors_getNeighborAlgorithm (harkio_Neighbors *nbs)
 Getter. harkio_Neighbors の近接関係計算アルゴリズムを返す。 More...
 
int harkio_Neighbors_calcNeighbors (harkio_Neighbors *nbrs, enum NeighborAlgorithm alg,...)
 harkio_Neighbors に登録されている位置の近接関係を計算する。 More...
 
int harkio_Neighbors_append (harkio_Neighbors *nbrs, int id, int numNeighbors, int *neighbors)
 新しい隣接関係を追加する。与えられた ID に隣接関係がすでに定義されていれば追加し、定義が無ければ新しく作成する。 More...
 
int harkio_Neighbors_Algorithms_NearestNeighbor (harkio_Neighbors *nbrs, int n, float thresh)
 近接関係計算アルゴリズムの実装。近傍をクラスタリングする方法。 More...
 
float euclidDistance (harkio_Position *pos_a, harkio_Position *pos_b, int length)
 内部用関数。二つの harkio_Position の距離を求める
 
void harkio_Neighbors_print (harkio_Neighbors *nbrs)
 harkio_Neighbors の内容を stderr に表示する。
 
int harkio_Neighbors_isEqual (harkio_Neighbors *a, harkio_Neighbors *b)
 harkio_Neighbors が等しいかどうかを比較する。 More...
 
harkio_Neighborsharkio_Neighbors_copy (harkio_Neighbors *n1)
 harkio_Neighbors の内容を コピーする More...
 

Detailed Description

harkio_Neighbor の API 群。 近接 Position の計算・取り出し・表現などを行う。

Author
Takeshi Mizumoto
Version
0.1

Function Documentation

int harkio_Neighbors_Algorithms_NearestNeighbor ( harkio_Neighbors nbrs,
int  n,
float  thresh 
)

近接関係計算アルゴリズムの実装。近傍をクラスタリングする方法。

Parameters
[in]nbrsharkio_Neighbors オブジェクト
[in]n近接関係と見なす最大数
[in]thresh近接か否かを判定するしきい値
Returns
成功すれば EXIT_SUCCESS, 失敗すれば EXIT_FAILURE.

nbrs が持つ位置のユークリッド距離をすべてについて計算し、 thresh より小さいものを近傍として登録する。ただし、その数が n より大きければ近い順に n 個だけ登録する。

Here is the call graph for this function:

Here is the caller graph for this function:

int harkio_Neighbors_append ( harkio_Neighbors nbrs,
int  id,
int  numNeighbors,
int *  neighbors 
)

新しい隣接関係を追加する。与えられた ID に隣接関係がすでに定義されていれば追加し、定義が無ければ新しく作成する。

Parameters
[in]nbsharkio_Neighbors オブジェクト
[in]id追加する id
[in]numNeighbors追加する隣接点の数
[in]numNeighbors追加する隣接へのポインタ
Returns
成功すれば EXIT_SUCCESS, 失敗すれば EXIT_FAILURE.

Here is the caller graph for this function:

int harkio_Neighbors_calcNeighbors ( harkio_Neighbors nbrs,
enum NeighborAlgorithm  alg,
  ... 
)

harkio_Neighbors に登録されている位置の近接関係を計算する。

Parameters
[in]nbsharkio_Neighbors オブジェクト
[in]alg近接関係計算アルゴリズムを表す enum.
[in]...アルゴリズムごとに決まる可変引数。
Returns
計算に成功すれば EXIT_SUCCESS, 失敗すれば EXIT_FAILURE を返す。

Here is the call graph for this function:

Here is the caller graph for this function:

harkio_Neighbors* harkio_Neighbors_copy ( harkio_Neighbors n1)

harkio_Neighbors の内容を コピーする

Returns
与えられた harkio_Neighbors をコピーした新しいオブジェクト

Here is the call graph for this function:

Here is the caller graph for this function:

void harkio_Neighbors_delete ( harkio_Neighbors **  nbrs)

デストラクタ。harkio_Neighbors のメモリを解放する。

Parameters
[in]nbrsメモリを解放するオブジェクトへのポインタへのポインタ

解放に成功すると xml には NULL が代入される。メンバのいくつかが NULL でもよい。

Here is the caller graph for this function:

enum NeighborAlgorithm harkio_Neighbors_getNeighborAlgorithm ( harkio_Neighbors nbs)

Getter. harkio_Neighbors の近接関係計算アルゴリズムを返す。

Parameters
[in]nbsharkio_Neighbors オブジェクト
int harkio_Neighbors_getNeighbors ( harkio_Neighbors nbrs,
int  id,
int *  numNeighbors,
int **  neighbors 
)

getter。与えられた id の近接 id を返す。[]

Parameters
[in]nbrs近接 ID を検索したい hakrio_Neighbors オブジェクト
[in]id近接 ID を検索したい対象の ID
[out]numNeighbors見つかった近接 ID の個数
[out]neighbors見つかった近接 ID の配列へのポインタ

引数に不備があれば EXIT_FAILURE が返される。成功すれば numNeighbors, neighbors に値がセットされ EXIT_SUCCESS が返る。 neighbors は関数内で malloc されるので free が必要。

1 int numNeighbors;
2 int *neighbors;
3 ret = harkio_Neighbors_getNeighbors(nbrs, targetID, &numNeighbors, &neighbors);
int harkio_Neighbors_getSize ( harkio_Neighbors nbs)

Getter. harkio_Neighbors に登録されている harkio_Positions の長さ

Parameters
[in]nbsharkio_Neighbors オブジェクト
int harkio_Neighbors_isEqual ( harkio_Neighbors a,
harkio_Neighbors b 
)

harkio_Neighbors が等しいかどうかを比較する。

Returns
等しければ EXIT_SUCCESS, 異なれば EXIT_FAILURE

Here is the call graph for this function:

harkio_Neighbors* harkio_Neighbors_new ( harkio_Positions poses)

コンストラクタ。近接関係を表すオブジェクトを生成する。

Returns
harkio_Neighbors 型のポインタ。失敗すると NULL を返す
Parameters
[in]poses近接関係を表現したい位置群を与える。 NULL でもよい。

poses はコピーせずにポインタが渡される。 NULL を与えた場合は位置が無い空のオブジェクトが生成される。 使用が終わったら、 harkio_Neighbors_delete でメモリ解放を行う。

Here is the caller graph for this function: