我试图在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)
,即简单地重新排列类似于嵌套循环的数据。
我的问题是,如何为这些数据构建查找表?
我会提供像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
欢迎任何帮助。
答案 0 :(得分:0)
我认为你正在寻找这个:
假设你有:
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)
请注意,这会将向量中的所需位置作为输入。