我在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) ;
答案 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);