Matlab:标量场的梯度

时间:2016-08-26 14:18:38

标签: matlab vector gradient scalar

我有以下格式的数据。

x y density
. .   .
. .   .
. .   .

这里,density是标量。如何在此数据集上执行渐变?我在Matlab中尝试了gradient运算符。但是,它只返回一个标量。

注意:xy均以单位间距均匀分布。边界点以浮点数结束,因为它是剪切数据。

1 个答案:

答案 0 :(得分:2)

您可以对数据行进行排序,以便将数据点重新整形为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);