Re: [問題] 有關於迴圈轉成矩陣...已回收

看板MATLAB作者 (幻無影)時間16年前 (2009/07/29 02:47), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《biglongtoday (大長今)》之銘言: : ※ 引述《sindyddd ()》之銘言: : : 我還是新手 目前正在學習當中 請各位不吝指教>"< : : 以下是我的問題.... : : --------------------------------------------------------------- : : 我想將程式跑成下面這樣類似矩陣的形式...(其他無數值的地方可以放零沒關係) : : i=1 i=2 i=3 i=4 ....... i=n : : → panzertp:感覺很像8008的問題 07/28 23:09 : : → sindyddd:想說 從第1個取到第i+1個 可以這樣寫嗎.... 07/28 23:37 : : 推 pid2:有錯誤訊息嗎??或是單純的答案不對而已 07/29 00:23 : : → sindyddd:答案不對 但是如果寫s(j(1:i+1),i)就出現錯誤訊息了 07/29 00:31 : u=2; : S0=3; : n=100; : d=3; : hh=u.^toeplitz(0:n); : hh=triu(hh(:,2:end),-1); : dd=triu(d.^repmat([0:n]',1,n),-1); : S0*hh.*dd : 這樣勒 呵...有人先發了~ n = 1000; S0 = 1; u = 2; d = 3; % d with S0 D_S0 = repmat(S0*d.^(0:n)', [1 n]); D_S0 = triu(D_S0, -1); % u U_1 = repmat(u.^(1:n), [n+1 1]); U_2 = repmat(u.^(0:n)', [1 n]); U = U_1 ./ U_2; U = triu(U, -1); S = D_S0 .* U; 為了效能,有用到除法...原 PO 就看看會不會影響到精度囉... -- ※ 發信站: 批踢踢實業坊(ptt.cc)

07/29 09:20, , 1F
除法相對來說比較會耗clock跟精準度
07/29 09:20, 1F

07/29 10:29, , 2F
這個也是對的^^ 至於精度好像沒影響到 謝謝你!!
07/29 10:29, 2F
既然 e0101010 大有提到,就補充說明一下小弟當初的想法好了 一開始的想法其實是這樣寫的 U_1 = repmat((1:n), [n+1 1]); U_2 = repmat((0:n)', [1 n]); U = u .^ (U_1 - U_2); U = triu(U, -1); 也就是先算出各元的指數之後用 .^ 算出實際的值。 不過考慮到實驗的結果是 次方 相較於 除法,所耗的時間除法是明顯比較少的, 就決定先在 repmat 之前先做次方,將指數相減的部分, 也就是成為大矩陣之後要所有元素都算過的部分用除法來算。 當然也有想到除法會造成的誤差通常是比較大的, 但是因為小弟是把目標放在效能,所以最後還是採用除法。 ※ 編輯: DigiPrince 來自: 61.58.102.177 (07/29 10:58)
文章代碼(AID): #1ARqVEwC (MATLAB)
文章代碼(AID): #1ARqVEwC (MATLAB)