例如,如果我想从 magic(5)
中读取中间值,我可以这样做:
M = magic(5);
value = M(3,3);
获取值== 13
。我希望能够执行以下操作之一:
value = magic(5)(3,3);
value = (magic(5))(3,3);
免除中间变量。但是,MATLAB 在 3
之前的第一个括号中提示 Unbalanced or expected parenthesis or bracket
。
是否可以在不先将其分配给变量的情况下从数组/矩阵中读取值?
实际上是可以做你想做的事,但你必须使用索引运算符的函数形式。当您使用 ()
执行索引操作时,您实际上是在调用 subsref
功能。所以,即使您不能这样做:
value = magic(5)(3, 3);
您可以这样做:
value = subsref(magic(5), struct('type', '()', 'subs', {{3, 3}}));
丑陋,但可能。 ;)
通常,您只需将索引步骤更改为函数调用,这样就不会有两组紧接在一起的括号。另一种方法是定义您自己的 anonymous function做下标索引。例如:
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
然而,归根结底,临时局部变量解决方案的可读性多,这绝对是我的建议。
我是一名优秀的程序员,十分优秀!