| Programming and Data Types | ![]() |
空行列
少なくとも1つの次元がゼロに等しい行列は、空行列 と呼ばれます。最もシンプルな空行列は、0行0列です。より複雑な行列の例は、0行5列、あるいは10-by-0-by-20です。
0行0列行列を作成するには、値を指定せずに鍵括弧を利用します。
A = []; whos A Name Size Bytes Class A 0x0 0 double array
関数zeros, ones, rand, eyeを使って、他のサイズの空配列を作成できます。たとえば、0行5列行列を作成するには、つぎのようにします。
E = zeros(0,5)
空行列に対する演算
空行列に関する基本的なモデルは、m行n列の行列に対し設定される任意の演算で、mとnが結果の次元で、m または nのどちらかがゼロでも可能です。結果の大きさは、同じ関数で計算したものと同じで、結果の内容がゼロで見積もられたものです。
C = [A B]
は、AとBの行数が等しいことが必要です。それで、Aがm行n列で、Bがm行p列ならば、Cはm行(n+p列になります)。これは、m、n、pのいずれかがゼロでも成り立ちます。
MATLABの中のほとんどの演算は、行ベクトルまたは列ベクトルを生みます。これは、結果が空行ベクトルになる場合も可能です。
r = zeros(1,0)
C = zeros(0,1)
も可能です。MATLAB の中のすべての行列を使って、次元に関する整合性に関するルールが成り立ちます。つぎの例題の中で、1行3列の行列を0行3列の空行列を付加しようとする試みは、エラーになります。
[1 2 3] + ones(0,3) ??? Error using ==> + Matrix dimensions must agree.
sum やmaxのようなMATLAB関数は、次元を減らす機能をもっています。行列を引数とすると、これらの関数は、結果をベクトルとして出力します。また、ベクトルを入力すると、スカラを出力します。空を入力すると、つぎのような結果になります。
sum([ ]) is 0prod([ ]) is 1max([ ]) is [ ]min([ ]) is [ ]If または Whileと空行列の利用
ifまたはwhileステートメントの式部分が空行列になる場合は、MATLABは式をfalseとして評価します。つぎの例は、Aが空配列なのでステートメントS0を実行します。
A = ones(25,0,4); if A S1 else S0 end
| コマンド/関数の双対性 | エラーとワーニング | ![]() |