完全一致ケース
%// Inputs (Added One more row to original post to include multiple match case)
A =[
0.1000 1.0000 10.0000 10.0000
1.0000 0.9000 0.4000 0.5000
1.0000 0.6000 0.5000 0.6000]
row_data = 1.0;
column_data = 10.0;
ここで、すべての一致に対応する値を探している場合は、これを使用します-
value = A(find(A(:,1)==row_data),find(A(1,:)==column_data))
私たちに与える -
value =
0.4000 0.5000
0.5000 0.6000
それ以外の場合、最初の一致のみに対応する値を探している場合は、これを使用します -
value = A(find(A(:,1)==row_data,1),find(A(1,:)==column_data,1))
私たちに与える -
value =
0.4000
また、浮動小数点数に伴う精度の問題にも注意してください。これはここでは問題にならないはずです。なぜなら、数値について具体的に言及しており、マッチングと入力の入力の間に他の計算は行われていないからです。
不正確な一致ケース
完全一致が利用できない場合は、次のコードに示すように補間を使用できます-
x = A(1,2:end)
y = A(2:end,1)
[X,Y] = meshgrid(x,y)
V = A(2:end,2:end)
row_data = 1.0;
column_data = 10.0;
value = interp2(X,Y,V,column_data,row_data)
Xq または Yq の値がそれぞれ X および Y の範囲外にある場合は、外挿を行う必要がありscatteredInterpolant
ますinterp2
。