我有一个第一行的矩阵,第一列是数据。基于行和列,我想在矩阵中查找值。例如,我的矩阵看起来像这样
一个=
0.1000 1.0000 10.0000 100.0000
1.0000 0.9000 0.4000 0.5000
如果行数据为 1(第二行),列数据为 10(第三列),则我得到 0.4 值。有没有办法找到那个值?例如,如果行数据为 0.2,列数据为 0.2。如何从该矩阵中找到值?感谢您的回复。
我有一个第一行的矩阵,第一列是数据。基于行和列,我想在矩阵中查找值。例如,我的矩阵看起来像这样
一个=
0.1000 1.0000 10.0000 100.0000
1.0000 0.9000 0.4000 0.5000
如果行数据为 1(第二行),列数据为 10(第三列),则我得到 0.4 值。有没有办法找到那个值?例如,如果行数据为 0.2,列数据为 0.2。如何从该矩阵中找到值?感谢您的回复。
%// 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
.