Re: [問題] 請問矩陣執行速度的問題
※ 引述《feignaz (怎能讓妳知道)》之銘言:
: 在進行一個龐大的矩陣運算時,若已知矩陣的維度n
: 先開好zeros(m,n) 在運算上是否會比較快?
: 例如:
: A=[1 2 3;
: 4 5 6;
: 7 8 9]
: B=[5 5 7]
: 法1 C=[A A;B B]
: 法2 C=zeros(4,6);
: C(1:3,1:3)=A; C(1:3,4:6)=A;
: C( 4 ,1:3)=B; C( 4 ,4:6)=B;
: 請問欲產生矩陣C
: 2種方法何者較好??
: 謝謝!
兩個方法應該差不多! 需要作預先配置的目的主要是為了在運算
過程中,避免系統一直像記憶體要空間.
像你的case,法一只需要跟記憶體要一次空間,可是法二也是要一
次空間,這樣做預先配置就沒多大的意義了.甚至有點多此一舉.
我猜這樣應該會達到反效果,拖延執行時間.
預先配置的功能主要有兩個:
1.避免程式出錯
(當你填入的元素超過預先配置的,很可能就是你程式有寫錯)
2.減少系統跟記憶體要空間的次數(加快速度)
(例子如下)
常見的預先配置通常是搭配迴圈在使用.
例如:
A=zeros(100,1);
for n=1:100
A(n)=n;
end
(當然,你如果需要產生一個這樣的向量其實不需要用for,但是這
是在舉例)
像上面的例子,如果你沒有先配置A,那麼for迴圈每作一次就要把
A向量多撐大一個元素,換言之,必須要跟記憶體要一個空間,所以
你做一百次,就要做一百次要空間的動作.
可是如果我們在for外面就先配置好大小了,那麼從頭到尾只做過
一次要空間的動作,之後就只是在改變裡面元素的數值.
這樣明白嗎?
--
★我喜歡夏天,就像我喜歡看著穿上白衣黑裙的妳★
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.89.97
推
11/30 23:16, , 1F
11/30 23:16, 1F
推
12/01 01:16, , 2F
12/01 01:16, 2F
→
12/01 01:36, , 3F
12/01 01:36, 3F
→
12/01 01:37, , 4F
12/01 01:37, 4F
推
12/01 09:32, , 5F
12/01 09:32, 5F
→
12/01 09:32, , 6F
12/01 09:32, 6F
推
12/01 11:07, , 7F
12/01 11:07, 7F
推
12/01 22:33, , 8F
12/01 22:33, 8F
推
12/02 11:36, , 9F
12/02 11:36, 9F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章