[討論] 欲計算Hessian,應如何建立Cell Array?

作者: YoursEver (豬是妳)   2015-10-22 11:38:19
如題,
要計算4D Hessian,
請問應如何將所有的偏微分項排入cell array?
以2D舉例,
(1) H = [ partial_xx, partial_xy; partial_yx, partial_yy ];
(2) 假設對一張 M-by-N 的影像做 Hessian,
這時候會得到 partial_xx, partial_xy; partial_yx, partial_yy 等,
共 4 個大小為 M-by_N 的矩陣.
(3) 我希望建立一個 M-by-N 的 cell array,
每一個cell內含一個 2*2 的矩陣:
[ partial_xx(i,j), partial_xy(i,j);
partial_yx(i,j), partial_yy(i,j)]
(i,j)對應到原本影像內的第(i,j)個pixel;
==
請問該怎麼寫才省時省力?
目前必須要排進cell array才能call cellfun處理後續.
雖然可以靠迴圈硬排,
因為實際的4D data量太大,迴圈會額外耗費時間.
謝謝.
作者: sunev (Veritas)   2015-10-22 12:55:00
cellfun 不見得會比迴圈快喔,用arrayfun ?
作者: celestialgod (天)   2015-10-22 13:39:00
arrayfun跟cellfun差不多吧XDD我忘記可以多個input了,s大對QQ 我錯惹以在原文修正喔對了 之前有測過cellfun跟for差不多XDD(在都有先配置記憶體下)
作者: sunev (Veritas)   2015-10-22 16:21:00
我指的是這篇所謂的後續,想辦法將迴圈向量化或是用arrayfun會比較好,cellfun應該不會比較快
作者: YoursEver (豬是妳)   2015-10-23 11:33:00
謝謝sunev. 說實在話,我對arrayfun和cellfun的差異並不了解.
作者: sunev (Veritas)   2015-10-26 16:56:00
簡單來說,arrayfun是掃一般的多維array,cellfun是掃cellarray,但matlab處理cell就是慢,所以能排成方整的array就用array吧
作者: YoursEver (豬是妳)   2015-10-27 10:53:00
收到,謝謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com