cell配列について
セル配列
Matlabである行列に行列を付け加えたりする場合, 行数(または列数)が同じでなくてはならない.
→3次元配列の場合は, 最初の行列と行数と列数が等しくないといけない
→クラスター分析などをするときに, 不便.
→なんとかして, 行列の大きさが異なるものを一つの記号にまとめられないか…
→セル配列とかいうのを使えばOK!
→セル配列??
→要するに“大きさの異なる行列を一つの記号で表記することができる”便利品!!
→簡単な使い方はココに.
例題
clear A
for i=1:5
kk=unidrnd(i);
jj=unidrnd(i);
for j=1:jj
for k=1:kk
A{i}(j,k)=i*j+k;
end
end
end
unidrnd(i)は1~iまでの整数から乱数を発生させる.
A{i}はAのi番目のセルの行列を指している.
なので, “A{i}”を行列と考えれば, 次ができることがわかる.
→A{i}(j,k)はAのi番目のセルのj行k列目を指している.
→A{i}(j,:)はAのi番目のセルのj行目を指している.
→A{i}(:,k)はAのi番目のセルのk列目を指している
Aは“ベクトル”となる
→size(A)とすると, 1×○となっている
→Aはそれぞれのセルの大きさを要素としているようなものとなっている
→入ってるものが1×1だったら, その値が表示される.
for i=1:size(A,2)
A{i}
end
とすると, 上で発生させたものが順次表示される.
また, 行列をセル配列行列のような形で保存することが可能.
A{i,j}のような形で使うと, A{i,j}番目が行列となる.
代入もそのままで問題なし. さらに, A{i,j}と打つと{i,j}番目に保存されている行列が表示される.
意外と便利かもしれない.
参考になったホームページ
MATLAB:マニュアル (サイバネットシステム)