2012-01-29 16 views
21

括弧()と中括弧{}を使用してセル配列内の要素にアクセスすることの違いは何ですか?中括弧と括弧を使用してセル要素にアクセスすることの相違点

たとえば、cell{4} = []cell(4) = []を使用しようとしました。最初のケースでは、[]に4 番目の要素を設定し、それは電池素子を一掃第二場合、つまり、1

+0

[MATLABとforループのセル配列処理]の複製が可能です。(http://stackoverflow.com/questions/4635052/matlab-and-cell-array-handling-in-for-loop) – Jonas

+0

mathworksのリンク[セルアレイへのアクセス](http://www.mathworks.com/help/techdoc/matlab_prog/br04bw6-98.html)は、あなたのコンセプトをクリアするために非常に明快な方法で説明しています。 。 – SKM

答えて

59

細胞アレイを規則的なホモジニアスアレイと考えると、要素はすべてcellです。括弧(())は、ラバーオブジェクトcellにアクセスするだけで、中カッコ({})を使用して要素にアクセスすると、セルに含まれる実際のオブジェクトが得られます。例えば

A={ [5,6], 0 , 0 ,0 }; 

は次のようになります。

enter image description here

括弧で[]に等しい要素を作るの構文は、実際にその要素を削除する要求です、だからあなたがfoo(i) = []を行うように頼んだら、i番目のセルを削除してください。これは代入操作ではなく、RemoveElement操作です。これは、同様の構文を割り当てに使用します。

ただし、foo{i} = []を実行すると、i番目のセルに新しい値(空の配列)が割り当てられ、そのセルの内容がクリアされます。

+3

あなたは何かへのポインタを格納するリストとしてセルを見ることができます。 ()でポインタを取得し、{}でポインタが指すものを取得します。 – gstar2002

+1

それを見るもう一つの方法は、 '[]'に代入することはあなたが割り当てたものをすべて削除することです。したがって、 'foo(i)= []'は実際にi番目のセルを削除し、 'foo {i} = []'はi番目のセルの内容を削除します。 (何も残さない( '[]')) –

+0

Octaveのセル配列に関する文書(MATLAB compatible;)を見てください)https://www.gnu.org/software/octave/doc/v4.0.1/Indexing- Cell-Arrays.html#Indexing-Cell-Arrays] –

3

により電池素子数を減少this linkでヘルプを参照してください。ご覧のとおり、括弧()でアクセスすると、セルのサブセット(サブセル)が表示され、中括弧{}はアクセスしようとしているセルのコンテンツを表示します。

関連する問題