1

最初の行と最初の列がデータのマトリックスがあります。行と列に基づいて、マトリックスの値を見つけたいです。たとえば、マトリックスを次のようにします

A =

0.1000    1.0000   10.0000  100.0000
1.0000    0.9000    0.4000    0.5000

行データが 1 (2 行目) で列データが 10 (3 列目) の場合、0.4 の値が得られます。その値を見つける方法はありますか?たとえば、行データが 0.2、列データが 0.2 の場合。そのマトリックスから値を見つけるにはどうすればよいですか? ご回答ありがとうございます。

4

1 に答える 1

3

完全一致ケース

%// 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

于 2014-08-03T08:34:00.387 に答える