16

Matlab中,表达式M()到底在哪里做M矩阵?

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

ans =

     8     1     6
     3     5     7
     4     9     2

这个表达式isequaln(M, M())在所有情况下都是真的吗?仅仅是M()的副本M,还是相同的表达式,或者是否存在任何上下文,其中提到的M()意思不是指的M?也许在运算符重载的情况下?

4

1 回答 1

15

除了它会在某些函数上提供默认操作,例如rand(), 和复活节彩蛋,例如imagesc()and spy()(这也可以在没有 的情况下工作()),它似乎是访问整个数组的一种更有效的方式,只要它们的维数是低于 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但是,对于作业, vs之间几乎没有区别a1=a(),后者慢了 1.5%...

也许这个线程会回答你关于操作符重载的一些问题。

于 2012-12-03T10:38:49.793 回答