次のようなデータセットがあります。
bthd = sort(floor(1+(10-1).*rand(10,1)));
bthd2 = sort(floor(1+(10-1).*rand(10,1)));
bthd3 = sort(floor(1+(10-1).*rand(10,1)));
Depth = [bthd;bthd2;bthd3];
Jday = [repmat(733774,10,1);repmat(733775,10,1);repmat(733776,10,1)];
temp = 10+(30-10).*rand(30,1);
Data = [Jday,Depth,temp];
ここで、最初の列にユリウス日、2 番目の列に深さ、3 番目の列に温度を持つ「データ」に似たマトリックスがあります。一意の Jday ごとに最初と最後の値が何であるかを見つけたいと思います。これは次の方法で取得できます。
Data = [Jday,Depth,temp];
[~,~,b] = unique(Data(:,1),'rows');
for j = 1:length(unique(b));
top_temp(j) = temp(find(b == j,1,'first'));
bottom_temp(j) = temp(find(b == j,1,'last'));
end
ただし、私のデータ セットは非常に大きく、このループを使用すると実行時間が長くなります。これを行うためのベクトル化されたソリューションを提案できる人はいますか?