首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何索引由函数返回的MATLAB数组,而不先将其赋值给局部变量?

如何索引由函数返回的MATLAB数组,而不先将其赋值给局部变量?
EN

Stack Overflow用户
提问于 2010-09-02 20:34:37
回答 5查看 74.1K关注 0票数 381

例如,如果我想从magic(5)中读取中间值,我可以这样做:

M = magic(5);
value = M(3,3);

去找value == 13。我希望能够做这样的事情:

value = magic(5)(3,3);
value = (magic(5))(3,3);

省去中间变量。然而,MATLAB在3之前的第一个括号中抱怨Unbalanced or unexpected parenthesis or bracket

是否可以从数组/矩阵中读取值,而不先将其赋值给变量?

EN

回答 5

Stack Overflow用户

发布于 2013-08-10 03:15:10

至少在MATLAB 2013a中,你可以像这样使用getfield

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

获取(1,2)处的元素

票数 58
EN

Stack Overflow用户

发布于 2010-09-02 20:46:10

不幸的是,matlab不支持像magic(5)(3,3)这样的语法。您需要使用临时中间变量。你可以在使用后释放内存,例如

tmp = magic(3);
myVar = tmp(3,3);
clear tmp
票数 16
EN

Stack Overflow用户

发布于 2012-02-03 00:32:16

请注意,如果您将运行时间与标准方法进行比较(对结果进行签名,然后访问条目),它们是完全相同的。

subs=@(M,i,j) M(i,j);
>> for nit=1:10;tic;subs(magic(100),1:10,1:10);tlap(nit)=toc;end;mean(tlap)

ans =

0.0103

>> for nit=1:10,tic;M=magic(100); M(1:10,1:10);tlap(nit)=toc;end;mean(tlap)

ans =

0.0101

在我看来,底线是: MATLAB没有指针,你必须接受它。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3627107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档