我有以下格式的數據。Matlab:標量字段的梯度
x y density
. . .
. . .
. . .
這裏,density
是標量。如何對這個數據集執行漸變?我在Matlab中嘗試了gradient
運算符。但是,它只返回一個標量。
注:x
和y
均勻間隔單位間距。邊界點以浮點數結束,因爲它是剪切數據。
我有以下格式的數據。Matlab:標量字段的梯度
x y density
. . .
. . .
. . .
這裏,density
是標量。如何對這個數據集執行漸變?我在Matlab中嘗試了gradient
運算符。但是,它只返回一個標量。
注:x
和y
均勻間隔單位間距。邊界點以浮點數結束,因爲它是剪切數據。
您可以對數據行進行排序,以便數據點可以重新整形爲2D矩陣。然後可以計算的梯度。
% 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);
有一個問題。我注意到有一些邊界點,因爲飛機被剪斷,所以是「浮動」。它可能包含它們嗎?否則,我會製作腳本來排除這些點並嘗試您的解決方案。 –
@SathishKrishnan這應該處理浮動就好了。你是說他們*不是在邊界等距嗎? – Suever
是的。邊界點不等距。 –
您的數據是否均勻分佈? – Suever
是的。它是均勻間隔的。 X和Y的間距都是1. –
X和Y是否也以'1開頭? – Suever