为了账号安全,请及时绑定邮箱和手机立即绑定

我如何索引一个由函数返回的MATLAB数组,而不首先将它赋值给局部变量呢?

我如何索引一个由函数返回的MATLAB数组,而不首先将它赋值给局部变量呢?

森栏 2019-05-30 13:36:02
我如何索引一个由函数返回的MATLAB数组,而不首先将它赋值给局部变量呢?例如,如果我想从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.是否可以从数组/矩阵中读取值,而不首先将其分配给变量?
查看完整描述

4 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

只是好博客在……上面洛伦谈Matlab的艺术几天前有几颗可能有用的宝石。特别是,使用助手函数,如:

paren = @(x, varargin) x(varargin{:});curly = @(x, varargin) x{varargin{:}};

哪里paren()可以像

paren(magic(5), 3, 3);

会回来

ans = 16

我还推测这将比新手的回答更快,但我还没有检查(使用分析器!)。也就是说,您还必须在某个地方包含这些函数定义。我个人已经使他们在我的道路上独立的功能,因为他们是超级有用的。

这些函数和其他功能现在可以在函数式程序设计结构可通过matlab外接程序资源管理器或文件交换.


查看完整回答
反对 回复 2019-05-30
?
largeQ

TA贡献2039条经验 获得超7个赞

您对使用无文档化的特性有何感想:

>> builtin('_paren', magic(5), 3, 3)               %# M(3,3)ans =
    13

或用于单元阵列:

>> builtin('_brace', num2cell(magic(5)), 3, 3)     %# C{3,3}ans =
    13

就像魔法:)


最新情况:

坏消息是,上面的黑客已经不起作用了R2015b!这很好,它是无文档的功能,我们不能依赖它作为支持的特性:)

对于那些想知道在哪里可以找到这类东西的人,请查看文件夹。fullfile(matlabroot,'bin','registry')。有一堆XML文件列出了各种各样的好东西。请注意,直接调用其中一些函数很容易导致MATLAB会话崩溃。


查看完整回答
反对 回复 2019-05-30
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

至少在matlab 2013 a中您可以使用getfield比如:

a=rand(5);getfield(a,{1,2}) % etc

在(1,2)处得到元素


查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 1718 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信