0

異なる値を持つベクトルがあります。一部の値はゼロであり、場合によっては次々と来ることさえあります。このベクトルを同じサイズの別のベクトルに対してプロットする必要がありますが、ゼロを含めることはできません。ベクトルにある種の補間を行う最良の方法は何ですか?また、どのように行うのですか? mat-lab で補間について読み込もうとしましたが、実装するのに十分な理解がありませんでした。このプログラムは初めてなので、順を追って説明していただけるとありがたいです。

ありがとう

4

1 に答える 1

5

ゼロに等しい値が除外される2 つの等しい長さのベクトルxyで構成されるデータセットから始めてy、最初にゼロを除外するサブセットを選択します。

incld = y~=0;

次に、そのサブセットを補間します。

yn = interp1(x(incld),y(incld),x);

結果の例、 (緑) と(赤)xに対してプロット:yxyn

ここに画像の説明を入力

編集

補間の定義により、終点がゼロの場合、たとえば上記の行の前に次を実行するなどして、個別に処理する必要があることに注意してください。

if y(1)==0, y(1) = y(find(y~=0,1,'first'))/2; end
if y(end)==0, y(end) = y(find(y~=0,1,'last'))/2; end

編集#2

これは上記の 2D バージョンで、配列XYは 2D 配列 のエントリに対応する座標Zです。

[nr nc]=size(Z);
[X Y] = meshgrid([1:nc],[1:nr]);
X2 = X;
Y2 = Y;
Z2 = Z;
excld = Z==0;
X2(excld) = [];
Y2(excld) = [];
Z2(excld) = [];
ZN = griddata(X2,Y2,Z2,X,Y);

ZN補間されたポイントが含まれます。

下の図では、ゼロは濃い青色のパッチで示されています。左が補間前、右が補間後: ここに画像の説明を入力

于 2013-09-10T10:07:03.413 に答える