2014-03-18 84 views
1

这可能是愚蠢的,但基本上,我有一个函数在MATLAB中调用wavedec。该函数对矢量进行小波分解。如何矢量化给定* MATLAB函数?

现在,看看文档,这个函数的输入必须是一个向量。

但是,如果我有一个矩阵,我想为矩阵的每一列调用这个函数呢?最坏的情况下,我可以把它放到for循环中,但我想知道是否有更优雅的方式。 (可能与arrayfun?我不知道)。

谢谢。

回答

1

有可能使用cellfun,您必须将矩阵转化为向量的细胞:

mat2cell(M,size(M,1),ones(size(M,2),1)) 

两者cellfun和arrayfun内部工作迭代,这意味着它并不比一个循环更快。

+2

啊有趣。那么我不妨写一个for-loop呢?为什么MATLAB不会像这样初始化矢量化的东西? – Spacey

+0

排除一些可能通过arrayfun/cellfun获得特殊处理的核心函数(乘法等):无法并行运行两个函数。除了每个输入矢量迭代调用“wavedec”之外,像cellfun这样的函数应该做什么? – Daniel

+0

不,不是,我的意思是,为什么wavedec可以在基础上运行,比如说fft是?他们为什么会这样设计呢? – Spacey