gpt4 book ai didi

matlab - 如何在不先将函数返回的 MATLAB 数组分配给局部变量的情况下对其进行索引?

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:57 25 4
gpt4 key购买 nike

例如,如果我想从 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

然而,归根结底,临时局部变量解决方案的可读性,这绝对是我的建议。

关于matlab - 如何在不先将函数返回的 MATLAB 数组分配给局部变量的情况下对其进行索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com