【问题标题】:MATLAB: interpolate vectorMATLAB:插值向量
【发布时间】:2011-06-26 14:33:52
【问题描述】:

如何在 MATLAB 中插值向量?

例如,我有以下矩阵:

M=    
 1 10  
 2 20  
 3 30  
 4 40  

M的第一列表示x坐标的独立参数,M的第二列表示输出或y坐标。

我还有以下输入向量:

a =
 2.3  
 2.1  
 3.5  

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

23   
21   
35

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

    你想使用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 具有执行此操作的内置函数
    • Matlab 有一个内置函数可以做几乎任何事情。在重新发明轮子之前,请务必查看文档。 Matlab 文档是我所见过的最好的文档。
    • Mathworks 应该赞助 SO,因为现在你可以真正发现你需要的内置函数。
    • @EvgeniSergeev - 这很有趣。我在 MATLAB 中学习到的几乎所有函数都是通过 SO 学习到的。
    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多