1

ここの.matファイルには2つの変数があります:https: //www.yousendit.com/download/UW13UGhVQXA4NVVQWWNUQw

testzは、累積距離のベクトルです(メートル単位、単調かつ定期的に増加)

testSDTは、距離ベクトルと速度のベクトルを使用して生成された、統合された(累積)音波の移動時間(ミリ秒単位)のベクトルです(間隔の移動時間を作成する中間ステップがあります)

速度は連続可変関数であるため、結果として得られる間隔の移動時間と統合された移動時間は整数ではなく、大きさが可変です。

私が欲しいのは、一定の時間間隔(たとえば、1 ms、2 ms、...、n ms)で距離ベクトルをリサンプリングすることです。

難しいのは、最大移動時間994.6659が2つのベクトルのサンプル数よりも短いため、interp1を使用するのは簡単ではないということです。すなわち:

X =testSDT->1680サンプル

Y =testz->1680サンプル

XI = [1:1:994]->994サンプル

これは私が思いついたコードです。これは機能するコードであり、それほど悪くはないと思います。

%% Initial chores
M=fix(max(testSDT));
L=(1:1:M);     

%% Create indices
% this loops finds the samples in the integrated travel time vector
% that are closest to integer milliseconds and their sample number
for i=1:M
  [cl(i) ind(i)] = min(abs(testSDT-L(i)));
  nearest(i) = testSDT(ind(i)); 
end

%% Remove duplicates
% this is necessary to remove duplicates in the index vector (happens in this test). 
% For example: 2.5 ms would be the closest to both 2 ms and 2 ms
[clsst,ia,ic] = unique(nearest);
idx=(ind(ia));

%% Interpolation
% this uses the index vectors to resample the depth vectors at
% integer times
newz=interp1(clsst,testz(idx),[1:1:length(idx)],'cubic')';

私が見る限り、このコードには1つの問題があります。それは、補間のXIとしてベクトルidxに依存していることです。ベクトルidxはベクトルindより1サンプル短い(1つの重複が削除された)。

したがって、私の新しい時間は1ミリ秒短く停止します。これは非常に小さな問題であり、重複する可能性は低いですが、誰かが回避策を考えたり、問題に完全にアプローチする別の方法を考えたりできるかどうか疑問に思っています。

ありがとうございました

4

1 に答える 1

1

私があなたを正しく理解しているなら、あなたはその余分な点に外挿したいと思うでしょう。これは多くの方法で実行できます。1つは、interp1行にその余分なポイントを追加することです。データを追跡することが期待される関数がある場合は、それをデータに適合させてから、その余分なポイントを取得するか、などのツールを使用して使用できますfnxtr

しかし、私はあなたがラインを使用した方法のためにあなたが何を望んでいるかを理解するのに問題があります。使用する3番目の引数 [1:1:length(idx)]は、シリーズ[1 2 3 ...]です。通常、補間する場合はx_i、関心のあるポイントのベクトルを使用しますが、関心のあるポイントがたまたま一連の整数1:length(idx)であるとは思えません。 wantはちょうど[1:length(idx) xi]xiその余分なポイントのx軸の値です。

編集:

ループの代わりに、とから行列形式を生成するだけでL、行列演算は:testSDTを実行する際にいくらか高速になります。min(abs(...

  MM=ones(numel(testSDT),1)*L;
  TT=testSDT*ones(1,numel(L));
  [cl ind]=(min(abs(TT-MM)));
  nearest=testSDT(ind);
于 2013-01-01T21:22:13.017 に答える