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