Как изменить значения нескольких точек в матрице?

У меня есть matrix [500×500]. У меня есть другая matrix, которая [2×100] содержит пары координат, которые могут находиться внутри первой матрицы. Я хотел бы иметь возможность изменять все значения первой матрицы до нуля, без цикла.

mtx = magic(500); co_ords = [30,50,70; 30,50,70]; mtx(co_ords) = 0; 

Вы можете сделать это, используя функцию SUB2IND, чтобы преобразовать ваши пары индексов в линейный индекс:

 mtx(sub2ind(size(mtx),co_ords(1,:),co_ords(2,:))) = 0; 

Другой ответ:

 mtx(co_ords(1,:)+(co_ords(2,:)-1)*500)=0; 

Я наткнулся на этот вопрос, пока искал аналогичную проблему в 3-D. Я имел индексы строк и столбцов и хотел изменить все значения, соответствующие этим индексам, но на каждой странице (так что все 3-е измерение). В принципе, я хотел выполнить mtx(row(i),col(i),:) = 0; , но без цикла через строки и столбцы.

Я думал, что поделюсь своим решением здесь вместо того, чтобы задавать новый вопрос, поскольку он тесно связан.

Еще одно отличие заключалось в том, что линейные индексы были доступны мне с самого начала, потому что я определял их с помощью find . Я включу эту часть для ясности.

 mtx = rand(100,100,3); % you guessed it, image data mtx2d = sum(mtx,3); % this is similar to brightness ind = find( mtx2d < 1.5 ); % filter out all pixels below some threshold % now comes the interesting part, the index magic allind = sub2ind([numel(mtx2d),3],repmat(ind,1,3),repmat(1:3,numel(ind),1)); mtx(allind) = 0; 
  • Как построить круг в Matlab?
  • Интерполирование между matrixми вращения
  • Interesting Posts

    Использование jQuery с Windows 8 Metro JavaScript App вызывает ошибку безопасности

    Ошибка запуска Tomcat из NetBeans – «127.0.0.1 *» не распознается как внутренняя или внешняя команда

    Может ли GPU использоваться для кодирования h264?

    Установка Android SDK не находит JDK

    Копирование файла в Windows 8 дает «недостаточно памяти» даже при большом объеме памяти и дискового пространства

    Окна на этом диске не могут быть установлены. Выбранный диск имеет стиль раздела GPT. Windows 8.1

    Найти рекурсивное членство в группе (Active Directory) с помощью C #

    Как сделать ActionBar как Google Play, который исчезает при прокрутке

    jQuery: содержит селектор для поиска нескольких строк

    Изменение фонового рисунка виджета searchview

    Доступ к определенному полю в произвольно вложенных данных JSON

    Насколько велика строка пользовательского агента?

    Как сохранить измененное изображение в MATLAB?

    Шаблон Jasper не отображает текст

    Чтение информации в формате MP3 с использованием объектива c

    Давайте будем гением компьютера.