MATLAB:插值向量

6

如何在MATLAB中进行向量插值?

例如,我有以下矩阵:

M=    
 1 10  
 2 20  
 3 30  
 4 40  
M的第一列表示自变量x坐标,而第二列表示输出或y坐标。
我还有以下输入向量:
a =
 2.3  
 2.1  
 3.5  

对于每个 a 的值,我希望确定插值结果的输出。在这种情况下,给定 a,我希望返回

23   
21   
35
1个回答

8

这是编辑后的问题的答案,即“如何进行插值”

您需要使用interp1

M = [1 10;2 20;3 30;4 40];
a = [2.3;2.1;3.5;1.2];

interpolatedVector = interp1(M(:,1),M(:,2),a)
interpolatedVector =
    23
    21
    35
    12

以下是“在向量中找到两个最接近的数”的答案,即编辑前的原始问题。

x=[1,2,3,4,5]'; %'#
a =3.3;

%# sort the absolute difference
[~,idx] = sort(abs(x-a));

%# find the two closest entries
twoClosestIdx = idx(1:2);

%# turn it into a logical array
%#   if linear indices aren't good enough
twoClosestIdxLogical = false(size(x));
twoClosestIdxLogical(twoClosestIdx) = true;
twoClosestIdxLogical =
     0
     0
     1
     1
     0

谢谢兄弟,很抱歉让你这样修改问题。我试图解决第一个问题以解决第二个问题,但我不知道Matlab有一个内置函数可以做到这一点。 - Robert Dennis
1
Matlab内置了几乎所有功能的函数。在重新发明轮子之前,请始终查看文档。Matlab文档是我见过的最好的文档之一,适用于任何事情。 - Colin K
1
Mathworks 应该赞助 SO,因为现在你可以实际发现你需要的内置函数。 - Evgeni Sergeev
@EvgeniSergeev - 这真的很有趣。我学会使用的几乎所有MATLAB函数都是通过SO学习的。 - rayryeng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接