どせいたんさき。

ナスダヨー

横ベクトルと縦ベクトルを強制的に変換する方法

自分で関数なんかを作っていると,引数として縦/横ベクトルどちらか一方であることを前提にして作ってしまいがち.で,たまに逆側を入れてしまってエラーになったりする.

エラーを吐くくらいならいいんだけど,たまにとんでもない行列を出してきたりして困る.そこで reshape 関数を使う. reshape 関数の基本的な使い方は公式マニュアルより,

## reshape (A, m,n, ...)
##   Return a matrix with the given dimensions whose elements are
##   taken from the matrix a. The elements of the matrix are accessed
##   in column-major order (like Fortran arrays are sotred).
octave> reshape ([1,2,3,4] 2,2)
ans = 1  3
      2  4

ということなのでこれを利用して縦/横ベクトルを強制的に変換する.

## A: input argument
if (isvector(A))
  A = reshape(A, length(A), 1);  # なにがあろうと縦ベクトル
## 横ベクトルにしたければ reshape(A,1,length(A)) でおk
else
  usage("A should be a vector.")
endif