从向量中定义的值中查找矩阵中的值

时间:2012-03-06 19:46:12

标签: matlab vector matrix

采用以下示例:

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列(深度表示)表示表面与该深度之间的温度。

非常感谢任何建议。

1 个答案:

答案 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

希望这有用。