Matlab:3d矩阵除以2d矩阵

时间:2013-09-16 20:40:57

标签: matlab netcdf

我在MATLAB中有一个4d矩阵(按逐个纬度逐个经度)需要除以3d矩阵中所有组的求和值(逐个纬度的经度) ) 过了一段时间。 我想有一个4d矩阵,在4d矩阵中呈现每组的分数阀(逐个纬度地逐个纬度) 我怎么能这样做?

例如(netcdf文件):

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

我喜欢这样计算:

fraction = npp ./ npptot

结果应该是4d矩阵,逐个时间地逐个纬度。

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

1 个答案:

答案 0 :(得分:4)

bsxfun仅适用于此类维度扩展。诀窍是尺寸需要精确匹配,除了要扩展的尺寸。这意味着你的3d矩阵需要是一个4d时间x 1 x lat x lon矩阵:

npptot_reshaped = reshape(npptot, [size(npptot,1) 1 size(npptot,2) size(npptot,3)]);
fraction = bsxfun(@rdivide, npp, npptot_reshaped);