これはMatlabでは違法です
a = [[1];[2 3]]
これを許可する言語では、これはネストされた配列と呼ばれます。
私はMatlabで同じことをする方法を見つけました:
a = {[1];[2 3]}
これは何と呼ばれていますか?多くのコードを書かなくても、そのような変数を固定サイズ (たとえば 100) で初期化するにはどうすればよいでしょうか?
これはMatlabでは違法です
a = [[1];[2 3]]
これを許可する言語では、これはネストされた配列と呼ばれます。
私はMatlabで同じことをする方法を見つけました:
a = {[1];[2 3]}
これは何と呼ばれていますか?多くのコードを書かなくても、そのような変数を固定サイズ (たとえば 100) で初期化するにはどうすればよいでしょうか?
これはセル配列と呼ばれます。
コマンドを使用して初期化しますcell
cellArray = cell(3,2); %# this makes a 3-by-2 cell array
さまざまなオブジェクトのコレクションを格納する別の方法は、次のように初期化する構造体です。
myStruct = struct('firstField',1,'secondField',[2 3])
セルに対する構造体の利点は、フィールドに名前が付けられていることです。これにより、処理と文書化がはるかに簡単になります。セルは、たとえばセルで使用できるため、データを頻繁に操作する場合にデータを保存するのに非常に便利ですcellfun
。関数内にデータを保持するためにセルを使用することがよくありますが、関数間でデータを渡すために構造体(またはオブジェクト)を使用しています。
また、数値のリストがあり、それらをセル配列の要素に分散したい場合は、を使用できますnum2cell
。これにより、配列のすべての要素がセル配列の要素に個別に配置されmat2cell
ます。分割する場合は、を使用できます。不均一に配列します。
a = {1,[2 3]}
と同等です
b = mat2cell([1 2 3],[1 1],[1 2]);
または、次のように入力して中括弧の意味を見つけることもできます
help paren
どの出力:
{ } 中かっこはセル配列を形成するために使用されます。ネスト レベルが維持される点を除いて、ブラケット [ ] に似ています。{magic(3) 6.9 'hello'} は、3 つの要素を持つセル配列です。{magic(3),6.9,'hello'} も同じです。
{'This' 'is' 'a';'two' 'row' 'cell'} は 2 行 3 列の cell 配列です。セミコロンは最初の行を終了します。{1 {2 3} 4} は 3 要素の cell 配列で、要素 2 自体が cell 配列です。Braces are also used for content addressing of cell arrays. They act similar to parentheses in this case except that the contents of the cell are returned. Some examples: X{3} is the contents of the third element of X. X{3}(4,5) is the (4,5) element of those contents. X{[1 2 3]} is a comma-separated list of the first three elements of X. It is the same as X{1},X{2},X{3} and makes sense inside [] ,{}, or in function input or output lists (see LISTS). You can repeat the content addressing for nested cells so that X{1}{2} is the contents of the second element of the cell inside the first cell of X. This also works for nested structures, as in X(2).field(3).name or combinations of cell arrays and structures, as in Z{2}.type(3).
それはセル配列です。本当に必要な場合を除いて、それらは避けてください。操作が面倒で、速度がはるかに遅く、構文がひどく、一貫性がなく、ボルトオンの恨みであるためです。