1
私はこのコードを使用していますが、扱いにくいものです。これは、セル配列である1つの引数を持ち、各セルにはdoubleのベクトルがあります。すべてのベクトルは同じサイズです。この変数の関数の出力で関数を呼び出す必要があります。たとえば、ここではdoubleベクトルのすべてのメンバーに対してlog()を呼び出し、sum()を呼び出してすべてを合計します。実際のコードでは、セルの数がはるかに多くなります。ループを使用せずにこれを単純化する方法はありますか?ありがとう!doubleのセル配列上の関数の出力で関数を呼び出す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
を行うことができ[コロン演算子](http://www.mathworks.com/help/techdoc/ref/colon.html)を使用して、それを列ベクトルに再構成する必要があります。 'output = sum(log(dummyVector(:) )); ' – gnovice
あなたのおかげで! –