2015-05-15 2 views
1

у меня есть матрица 10х10 называется:вектор индексов

У меня есть вектор номеров столбцов:

C = [2, 6, 8];

У меня есть вектор номеров строк:

R = [1; 3; 7];

Номера столбцов соответствуют каждой строке. т. е. для столбца 1 мы рассматриваем номера строк, заданные R, для столбца 3 мы рассматриваем номера строк, заданные R и т. д.

Я хочу, чтобы заменить эти точные места в А с каким-либо другим номером 13.

т.е. для каждого из этих мест в матрице A:

(1,2) (1,6) (1,8), (3,2), (3, 6), (3,8) I want to insert 13. 

Как достичь выше?

ответ

0

Как dlavila отметил, что вы можете сделать A(R,C) = 13 которым будет лучший и простой. Тем не менее, я написал более длинный код с участием функции eval, что вы могли бы оказаться полезными в будущем:

for ii=1:length(C) 
    for jj =1:length(R) 
     eval(strcat('A(', num2str(C(ii)), ',',num2str(R(jj)),')=13;')) 
    end 
end 

Оба дают одинаковые результаты.

+1

Почему это когда-либо было бы более полезным, чем собственное индексирование MATLAB? – excaza

+0

Это не так, но это то, что я часто нахожу полезным, поэтому я решил поделиться им – Trenera

+1

Вообще лучше избегать 'eval': http://blogs.mathworks.com/loren/2005/12/28/evading- Eval / –

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