次のベクトルから:
depth = [0:0.1:20];
'depth'と同じデータを持ち、値が0.5ごとに取得され、次の結果が得られる新しいベクトルを作成するにはどうすればよいですか。
d2 = depth(1:5:end);
私のデータは実際には0.1間隔ではなくランダムな間隔で配置されているため、上記の単純なアプローチを適用することはできません。これを達成するための最良の方法は何でしょうか?
線形間隔のグリッドに最も近い配列内のポイントを検索する場合は、次のように実行できます。
% some example data
A = zeros(40,1);
for ii = 2:numel(A); A(ii)=A(ii-1)+rand; end
% your linear grid
Linds = A(1) : 0.5 : A(end);
% nearest indices
[~,inds] = min( abs(bsxfun(@minus, A, Linds)) );
のエントリinds
が繰り返される場合があることに注意してください。それ以外の場合、ベクトルで補間を実行する場合は、が必要interp1
です。ドキュメントから:
YI = INTERP1(X、Y、XI)は、配列XI内のポイントでの基になる関数Yの値であるYIを見つけるために補間します。Xは長さNのベクトルでなければなりません。
複数の異なる補間カーネルが利用可能であることに注意してください。たとえば、、'linear'
などです'spline'
。詳細help interp1
については、を参照してください。