在Matlab
中,M()
表达式在M
是矩阵的情况下究竟做了什么?
>> M = magic(3);
>> M()
ans =
8 1 6
3 5 7
4 9 2
表达式isequaln(M, M())
在所有情况下都是真的吗? M()
只是M
的副本,还是相同的表达式,或者是否有任何上下文指的是M()
除了引用M
之外的其他内容?可能在运算符重载的情况下?
答案 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的一些问题。