采用以下示例:
clear all
depth = [0,2,4,7,10,13,16,19,22,25,30,35];%depth below surface
temp = 0 + 29.*rand(365,12);
thermD = 0 + 36.*rand(365,1);
temp是指水柱的温度曲线,其中每列指的是不同的深度,其深度由“深度”给出。
thermD是描述水柱中温差最大的区域的变量。
我正在尝试创建一个变量,该变量显示温度的平均值高于由thermD表示的最大密度差异的区域。
因此,例如,如果thermD中的值为12(即最大温差区域位于表面下方12米处),那么我需要计算'temp'中前5列的平均温度为第1列:第5列(深度表示)表示表面与该深度之间的温度。
非常感谢任何建议。
答案 0 :(得分:0)
我相信这会做你需要的,它可能没有矢量化,但我认为它很明确:
clear all
depth = [0,2,4,7,10,13,16,19,22,25,30,35];%depth below surface
temp = 0 + 29.*rand(365,12);
thermD = 0 + 36.*rand(365,1);
% preallocate the array to represent the temperature between the surface and this depth
ave_temp_at_thermD = zeros(size(thermD));
% calculate the temperature for each water column
for ii=1:length(thermD)
% find the last element of depth at is less than the current
% value of thermD
II = find( depth < thermD(ii),1,'last');
% Find the mean temperature for columns 1 to II, first for each row,
% then by each column
ave_temp_at_thermD(ii) = mean(mean(temp(:,1:II)));
end
希望这有用。