1
我有这段代码正在工作,但有点麻烦。它有一个参数,它是一个单元阵列,在每个单元中是一个双向量。所有载体具有相同的大小。我需要在这个变量的函数输出上调用一个函数。例如,在这里,我在双向量中的所有成员上调用log(),然后调用sum()来总和一切。在实际的代码中,单元的数量要大得多。有没有一种方法来简化这个不使用循环?谢谢!如何简化这个在双精度单元数组上调用函数输出函数的MATLAB代码?
>> cell_of_double{:}
ans =
0.3140
0.7160
0.6925
0.4265
0.8875
0.5785
0.7185
0.3275
0.3030
0.5745
0.7435
0.6930
0.7290
0.5660
0.2750
ans =
0.3620
0.3580
0.4760
0.5560
0.3245
0.3785
0.8805
0.7600
0.7580
0.5435
0.4985
0.5830
0.6155
0.8010
0.6150
>> cell_of_double
cell_of_double =
[15x1 double]
[15x1 double]
>> sum(cellfun(@sum, cellfun(@(x) sum(arrayfun(@log, x)), cell_of_double(:), 'UniformOutput', false)))
ans =
-18.6004
由于'dummyVector'可以是一个列向量*或*的矩阵(取决于单元阵列是否为1×2或2×1),则应该使用[冒号运算符](http://www.mathworks.com/help/techdoc/ref/colon.html)将其重新整形为列向量以保证安全:'output = sum(log(dummyVector(:) ));' – gnovice 2011-03-11 19:54:25
感谢你们俩! – 2011-03-11 21:35:05