next up previous contents
: 列ベクトルと行ベクトルの積 : 行ベクトルと列ベクトルの積 : 行ベクトルと列ベクトルの積   目次

実装

行ベクトルと列ベクトルの積演算を関数として以下のように実装する。

/* 行ベクトルと列ベクトルの積 */
void WH_Matrix__whRv_mul_whCv_OUT_s
(int nColumns_a, double whRv_a[],
 int nRows_b, double whCv_b[],
 double *OUT__c)
/*
  入力引数:
    nColumns_a は行ベクトル whRv_a の列数
    whRv_a は行ベクトル
    nRows_b は列ベクトル whCv_b の行数
    whCv_b は列ベクトル
  出力引数:
    OUT__cはスカラーで、whRv_a と whCv_b の積
*/
{
  int i;

  assert(nColumns_a == nRows_b);

  *OUT__c = 0.0;
  for (i = 0; i < nColumns_a; i++) {
    *OUT__c += whRv_a[i] * whCv_b[i];
  }
}

列ベクトルの転置と列ベクトルの積演算を関数として以下のように実装する。

/* 列ベクトルの転置と列ベクトルの積 */
void WH_Matrix__whTrans_whCv_mul_whCv_OUT_s
(int nRows_a, double whCv_a[],
 int nRows_b, double whCv_b[],
 double *OUT__c)
/*
  入力引数:
    nRows_a は行ベクトル whCv_a の行数
    whCv_a は行ベクトル
    nRows_b は列ベクトル whCv_b の行数
    whCv_b は列ベクトル
  出力引数:
    OUT__cはスカラーで、whCv_a の転置と whCv_b の積
*/
{
  int i;

  assert(nRows_a == nRows_b);

  *OUT__c = 0.0;
  for (i = 0; i < nRows_a; i++) {
    *OUT__c += whCv_a[i] * whCv_b[i];
  }
}



Hiroshi KAWAI 平成15年8月11日