【发布时间】:2012-09-27 18:02:10
【问题描述】:
我有一个 2D 网格 (G= 250x250),其中只有大约 100 个点是已知的,其余的是未知的 (NaN)。我想调整这个矩阵的大小。我的问题是imresize 不能在 MATLAB 中为我执行此操作,因为它会删除我的已知值并只给出一个 NaN 矩阵。
有人知道可以为我做的方法吗?一个建议是使用插值方法(例如通过使用反距离加权),但我不确定它是否有效,甚至有没有更好的方法?
G = NaN(250,250);
a = ceil(rand(1,50)*250*250);
b = ceil(rand(1,50)*250*250);
G (a) = 1; G (b) = 0;
【问题讨论】:
-
imresize返回NaNs,因为您的原始矩阵有NaNs。我认为您应该用零替换NaNs,调用imresize,然后可以选择将零恢复为NaNs。另外,您所说的“调整矩阵大小”是什么意思——您是要在不更改矩阵中现有值的情况下进行插值还是只添加元素? -
@Eitan:我只想调整矩阵的大小并将这 100 个数据分配给粗网格上最合适的节点。我想如果我使用插值,一切都会改变!因此,我正在寻找在不更改值的情况下调整矩阵大小。另外,我不能用 0 或 1 替换 NaN 值,因为它会与我当前已知的数据混合在一起,我会失去准确性
-
imresize 不会调整矩阵大小,而是缩放图像。这涉及插值,因此使用 NaN 不会很好地工作..
-
@Angainor:这就是为什么我说一种解决方案可能使用插值,但我不知道如何!
-
@Sam 我没有关注你。假设你有
A = [1 2; 3 NaN];。您只想用零“填充”矩阵,以获得例如 10x10 矩阵(包含原始四个元素和其余零),或者对其进行插值以获得新的 10x10 矩阵?
标签: image matlab image-processing signal-processing