0

这是老问题,但我无法在我的代码中解决这个问题。我有 3 个数组:x、y、z 每个都是大小为 N 的列向量。x、y 是坐标数据,z 是在每个点测量的值。现在我想要的是有一个 N 乘 N 的矩阵,对应于每个点的值。这是样本数据 [xyz]:

1467713 599153  17.91
1468244 599296  17.91
1468776 599439  61.90
1469307 599582  17.91
1469838 599725  17.91
1470369 599868  38.23
1470900 600011  17.91
1471431 600154  43.41
1471962 600296  23.73
1472493 600439  21.80
1473024 600582  17.91
1473556 600725  17.91
1474087 600868  23.95
1474618 601011  17.91
1475149 601154  60.15
1475680 601297  17.91
1476211 601440  94.47
1476742 601583  37.72
1477273 601725  17.91

Ps 我的数据是无组织的经纬度集合。

4

2 回答 2

1

矢量化替代方案:

m = max(x);
n = max(y);
ind = sub2ind([m,n], x, y);
I(ind) = z;

如果您更喜欢丢失的像素,您也可以像 Dennis 的回答那样NaN初始化0I。

于 2013-05-03T17:14:08.050 回答
1

我相信您正在寻找的(Matlab)解决方案可能是:

H = NaN(max(x),max(y))
for i = 1:length(x)
   H(x(i),y(i)) = z(i)
end

我使用NaN这样测量点之间的矩阵将是“空的”。您当然也可以使用类似zeros.

于 2013-05-03T16:18:58.987 回答