2014-08-03 3 views
1

У меня есть матрица с первой строкой, а первая колонка - это данные. Основываясь на строке и столбце, я хочу найти значения в матрице. Например, у меня есть матрица выглядеть следующим образомКак найти значения на основе данных строк и столбцов

A =

0.1000 1.0000 10.0000 100.0000 
1.0000 0.9000 0.4000 0.5000 

Если данные строки 1 (вторая строка), а данные столбца 10 (третий столбец), то я получаю 0,4. Есть ли способ найти это значение? В случае, если данные строки равны 0,2, а данные столбца - 0,2. Как найти значения из этой матрицы? Благодарим вас за ответ.

ответ

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.

+0

Я ценю ваш ответ. Как вы упомянули в своем ответе, в случае, если мои данные строки равны 0,2, а мои данные столбца - 0,2 (от 0,1 до 1). Нужно ли интерполировать, чтобы найти значение. Можем ли мы использовать функцию interp2 в этой ситуации? Спасибо Divakar – Hung

+0

@Hung Проверьте изменения! – Divakar

+0

Большое спасибо Divakar – Hung

Смежные вопросы