異なる値を持つベクトルがあります。一部の値はゼロであり、場合によっては次々と来ることさえあります。このベクトルを同じサイズの別のベクトルに対してプロットする必要がありますが、ゼロを含めることはできません。ベクトルにある種の補間を行う最良の方法は何ですか?また、どのように行うのですか? mat-lab で補間について読み込もうとしましたが、実装するのに十分な理解がありませんでした。このプログラムは初めてなので、順を追って説明していただけるとありがたいです。
ありがとう
異なる値を持つベクトルがあります。一部の値はゼロであり、場合によっては次々と来ることさえあります。このベクトルを同じサイズの別のベクトルに対してプロットする必要がありますが、ゼロを含めることはできません。ベクトルにある種の補間を行う最良の方法は何ですか?また、どのように行うのですか? mat-lab で補間について読み込もうとしましたが、実装するのに十分な理解がありませんでした。このプログラムは初めてなので、順を追って説明していただけるとありがたいです。
ありがとう
ゼロに等しい値が除外される2 つの等しい長さのベクトルx
、y
で構成されるデータセットから始めてy
、最初にゼロを除外するサブセットを選択します。
incld = y~=0;
次に、そのサブセットを補間します。
yn = interp1(x(incld),y(incld),x);
結果の例、 (緑) と(赤)x
に対してプロット:y
x
yn
編集
補間の定義により、終点がゼロの場合、たとえば上記の行の前に次を実行するなどして、個別に処理する必要があることに注意してください。
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 バージョンで、配列X
とY
は 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
補間されたポイントが含まれます。
下の図では、ゼロは濃い青色のパッチで示されています。左が補間前、右が補間後: