たとえば、 から中央の値を読み取りたい場合はmagic(5)
、次のようにします。
M = magic(5);
value = M(3,3);
を取得しますvalue == 13
。次のようなことができるようにしたいと思います。
value = magic(5)(3,3);
value = (magic(5))(3,3);
中間変数を省略します。ただし、MATLAB はUnbalanced or unexpected parenthesis or bracket
の前の最初の括弧についてエラーを出力します3
。
最初に変数に割り当てずに配列/行列から値を読み取ることは可能ですか?
ベストアンサー1
実際にあなたが望むことを行うことは可能ですが、インデックス演算子の関数形式を使用する必要があります。を使用してインデックス操作を実行すると()
、実際にはsubsref
機能。したがって、次の操作は実行できません。
value = magic(5)(3, 3);
あなたはこれを行うことができます:
value = subsref(magic(5), struct('type', '()', 'subs', {{3, 3}}));
醜いですが、可能です。 ;)
一般的には、インデックスのステップを関数呼び出しに変更するだけで、2組の括弧が連続しなくなります。これを行う別の方法は、独自の括弧を定義することです。匿名関数添え字によるインデックス付けを行います。例:
subindex = @(A, r, c) A(r, c); % An anonymous function for 2-D indexing
value = subindex(magic(5), 3, 3); % Use the function to index the matrix
しかし、結局のところ、一時的なローカル変数ソリューションの方がはるかに読みやすく、間違いなく私が提案する方法です。