2013-06-05 3 views
0

Скажем, у меня есть:Matlab: как получить M (1,2) из ​​вектора v = [1,2]?

M = [1, 2; 3, 4] 
v = [1, 2]; 

M (v) дает [1 3], но я хочу, чтобы это M(1, 2) = 3.

Есть ли способ сделать это? Конечно, я мог бы делать M(v(1), v(2)), но мне нужно что-то работать для M N -мерный массив и v вектор длины N.

Большое спасибо

+0

'M (1,2)' адреса 2-й столбец 1-й строки 'M' который это '2'. Почему вы хотите, чтобы это выражение возвращало '3'? Я не уверен, что понимаю ваш вопрос. –

+0

обратите внимание, что 'M (1,2)' равно 2 в этом случае, 3 будет 'M (2,1)' –

+0

Извините, что было M (1,2) = 2. Я нашел ответ на свой вопрос в теме, предложенной Эйтаном: V = num2cell (v), а затем M (V {:}). Огромное спасибо – JuliaR

ответ

1

Если ваша цель состоит в том, чтобы получить значения из М, я хотел бы использовать M (sub2ind (размер (M), v (:, 1), v (:, 2))) это будет хорошо работать для векторной версии v.

0

Вы можете использовать как Matlab расширяет cell

M = [1, 2; 3, 4] 
v = {1, 2} 
M(v{:}) 

(вы можете превратить V с v_cell=num2cell(v))