我有以下格式的数据。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