私は次の形式のデータを持っています。Matlab:スカラーフィールドの勾配
x y density
. . .
. . .
. . .
ここで、density
はスカラーです。このデータセットでグラデーションを実行する方法は?私はMatlabのgradient
演算子を試しました。ただし、スカラーのみを返します。
注:x
とy
の両方は、単位スペーシングで均一な間隔になっています。境界点は、クリップされたデータであるため、浮動小数点数として終了します。
私は次の形式のデータを持っています。Matlab:スカラーフィールドの勾配
x y density
. . .
. . .
. . .
ここで、density
はスカラーです。このデータセットでグラデーションを実行する方法は?私はMatlabのgradient
演算子を試しました。ただし、スカラーのみを返します。
注:x
とy
の両方は、単位スペーシングで均一な間隔になっています。境界点は、クリップされたデータであるため、浮動小数点数として終了します。
データポイントを2次元マトリックスに再構成できるように、データの行を並べ替えることができます。 のグラデーションは、です。
% Sort so that we get the density into column-major ordering
[~, inds] = sortrows(data(:,[1 2]));
% Reshape the density data so it's [numel(Y) x numel(X)]
density = reshape(data(inds,3), numel(unique(data(:,2))), numel(unique(data(:,1))));
% Compute the X and Y gradients
[FX, FY] = gradient(density);
1つの問題。境界点がいくつかあることに気が付いています。境界点は、飛行機がクリップされるときに浮かびます。それらを含めることは可能ですか?さもなければ、私はそれらのポイントを除外し、あなたの解決策を試すためのスクリプトを作成します。 –
@SathishKrishnanこれは浮動小数点をうまく処理する必要があります。あなたは彼らが*境界に等間隔ではないと言っていますか? – Suever
はい。境界点は等間隔ではありません。 –
データは均一な間隔で配置されていますか? – Suever
はい。それは均一に間隔を置いています。 'x'と' y'の間隔は共に1です。 –
XとYは '1'でも始まりますか? – Suever