查找表

问题描述 投票:1回答:1

我试图在MATLAB中实现一种查找表。

我有一个从脚本中生成的数据,有三个变量被扫过,比方说是 var_a, var_b, var_c. 这些都是嵌套式扫除,(var_a -> var_b -> var_c)而且有10个输出。out_01, out02, ..., out10.

现在,我已经安排了每个输出为 out_01 = f(var_a,var_b,var_c)即简单的重新排列数据,类似于嵌套循环。

我的问题是,如何为这些数据建立一个查找表?我将给出输入,如get out_01 在某些 var_a(X), var_b(Y), var_c(Z).

我已经尝试了以下方法。

    idx1_var_a   = max(find(data.var_a <= options.var_a));
    idx2_var_a   = min(find(data.var_a >= options.var_a));

    idx1_var_b = max(find(data.var_b <= options.var_b));
    idx2_var_b = min(find(data.var_b >= options.var_b));

    idx1_var_c = max(find(data.var_c <= options.var_c));
    idx2_var_c = min(find(data.var_c >= options.var_c));

    Y1 = interpn(data.var_c,data.var_b,data.var_a,data.out_01,data.var_c(idx1_var_c),data.var_b(idx1_var_b),data.var_a(idx1_var_a))

    Y2 = interpn(data.var_c,data.var_b,data.var_a,data.out_01,data.var_c(idx2_var_c),data.var_b(idx2_var_b),data.var_a(idx2_var_a))        

    if Y1 == Y2
        Y = Y1
    else        
        Here I am unable to figure how to interpolate between these two output values,Y1, and Y2!!
    end

欢迎任何帮助。

matlab interpolation lookup
1个回答
1
投票

我想你要找的是这个。

假设你有:

var_a = 1:3;
var_b = 0:0.3:0.9;
var_c = 1:2;

[A, B, C] = ndgrid(var_a, var_b, var_c)

F = A.^3+B.^2+C;

现在你可以在所有现有的点上直接访问函数。

F(1,2,2) 

或者说

F(var_a==1,var_b==0.3,var_c==2)

现在,如果你对网格点之间的数值感兴趣,你可以使用 interp3

Vq = interp3(F,1.5,2.5,1.5)

需要注意的是,这是将向量中的所需位置作为输入。

© www.soinside.com 2019 - 2024. All rights reserved.