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()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 に答える