[讨论] 欲计算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