Точного случай
%// 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
.
Я ценю ваш ответ. Как вы упомянули в своем ответе, в случае, если мои данные строки равны 0,2, а мои данные столбца - 0,2 (от 0,1 до 1). Нужно ли интерполировать, чтобы найти значение. Можем ли мы использовать функцию interp2 в этой ситуации? Спасибо Divakar – Hung
@Hung Проверьте изменения! – Divakar
Большое спасибо Divakar – Hung