2013-09-02 4 views
1

У меня есть матрица M, содержащая только нули. Теперь у меня два массива. Первый содержит индексы матрицы, которые необходимо изменить, а вторая содержит значения, которым необходимо изменить элементы матрицы в этих индексах.Изменение матричных элементов из векторов в MATLAB

Скажем:

mat_A = zeros(50, 50); 
vec_indices = [4; 5; 2500]; 
vec_values = [1; 1; 1]; 

Теперь, если я скажу M(4), M(5) or M(2500), я хочу, чтобы результат 1 во всех случаях.

Есть ли простой «однострочный», который выполняет эту задачу?

ответ

4

Простой:

mat_A(vec_indices) = vec_values 

Обратите внимание, что это работает только как это для linear indices, поэтому, когда вы распрямите вашу матрицу 50х50 в один 2500x1 вектор.

+0

Да, я пробовал это и получил «индексы индексов должны быть либо натуральными целыми числами, либо логическими» – Schnigges

+0

Он работает на моем компьютере. Пожалуйста, напишите полный пример, который даст вам сообщение об ошибке. –

+0

hm ... вы правы, мой простой пример отлично подходит для меня ... Я читаю два вектора с помощью 'textread'. Они '<280x1 double>' – Schnigges