在Matlab
中,表达式M()
到底在哪里做M
矩阵?
>> M = magic(3);
>> M()
ans =
8 1 6
3 5 7
4 9 2
这个表达式isequaln(M, M())
在所有情况下都是真的吗?仅仅是M()
的副本M
,还是相同的表达式,或者是否存在任何上下文,其中提到的M()
意思不是指的M
?也许在运算符重载的情况下?
除了它会在某些函数上提供默认操作,例如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%...
也许这个线程会回答你关于操作符重载的一些问题。