例如,如果我想从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
。
是否可以从数组/矩阵中读取值,而不先将其赋值给变量?
发布于 2013-08-10 03:15:10
发布于 2010-09-02 20:46:10
不幸的是,matlab不支持像magic(5)(3,3)
这样的语法。您需要使用临时中间变量。你可以在使用后释放内存,例如
tmp = magic(3);
myVar = tmp(3,3);
clear tmp
发布于 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没有指针,你必须接受它。
https://stackoverflow.com/questions/3627107
复制相似问题