什么是空的`()`在Matlab矩阵上做什么?

时间:2012-12-03 08:43:21

标签: matlab matrix

Matlab中,M()表达式在M是矩阵的情况下究竟做了什么?

>> M = magic(3);
>> M() 

ans =

     8     1     6
     3     5     7
     4     9     2

表达式isequaln(M, M())在所有情况下都是真的吗? M()只是M的副本,还是相同的表达式,或者是否有任何上下文指的是M()除了引用M之外的其他内容?可能在运算符重载的情况下?

1 个答案:

答案 0 :(得分:15)

除了事实之外,它会对某些函数(例如rand())和复活节彩蛋(例如imagesc()spy()进行默认操作(这也可以不使用{{ 1}}),只要它们的维数低于5,它似乎是一种更有效的方式来访问整个数组(正如@Rody Oldenhuis所发现的那样)。例如:

()

产率:

a=rand(2^12);

tic
for j=1:1e5
a ;
end
toc

tic
for j=1:1e5
a(:)  ;
end
toc

tic
for j=1:1e5
a()   ; 
end
toc

然而,对于作业,Elapsed time is 0.047250 seconds. Elapsed time is 0.022260 seconds. Elapsed time is 0.011925 seconds. a1=a之间的差异非常小,后者则慢了1.5%......

也许这个帖子会回答你关于operator overloading的一些问题。