1

MATLAB に 4 次元行列 (グループごとの緯度ごとの時間) があり、これを 3 次元行列 (緯度ごとの時間) のすべてのグループの合計値で割る必要があります。期間。各グループのフラクション バルブを 4 次元マトリックス (グループごと、緯度ごと、経度ごと) で表示する 4 次元マトリックスが必要です。どうすればよいですか?

例 (netcdf ファイル):

short npp(time, pft, latitude, longitude) ;
short npptot(time, latitude, longitude) ;

私はこの計算をするのが好きです:

fraction = npp ./ npptot

結果は、時間ごとのグループごとの緯度ごとの経度の 4 次元行列である必要があります。

short fraction(time, pft, latitude, longitude) ;
4

1 に答える 1

4

bsxfunはまさにこの種の次元展開のためのものです。秘訣は、拡張したい寸法を除いて、寸法が正確に一致する必要があるということです。これは、3D 行列が代わりに 4D 時間 x 1 x 緯度 x 経度行列である必要があることを意味します。

npptot_reshaped = reshape(npptot, [size(npptot,1) 1 size(npptot,2) size(npptot,3)]);
fraction = bsxfun(@rdivide, npp, npptot_reshaped);
于 2013-09-16T20:53:29.153 に答える