Я просто хочу знать, есть ли какой-либо эквивалентный синтаксис Octave / Matlab для этого конкретного цикла for в python:
for (i,j) in [(1,2),(2,3),(3,4),(4,5),(5,6),(6,7)]:
a[i,j] = 1
Мне это нужно, чтобы упростить мои задания по обработке изображений, где я могу легко построить матрицу изображения без необходимости вводить значение каждого пикселя для почти каждого элемента матрицы изображения. Итак, если есть какие-либо другие способы реализации вышеуказанной функциональности в Octave / Matlab, дайте мне знать.
Спасибо.






Самым простым здесь было бы:
for i = 1 : 6
a(i, i+1) = 1; % Alternatively: j=i+1; a(i,j)=1;
end
Более гибкая альтернатива - построение пар:
vals = [1,2; … ; 6,7]; % Your i,j pairs. Possibly even put 3 numbers there, i,j,value.
for i = 1 : size(vals, 1)
a(vals(i,1), vals(i,2)) = 1;
end
Если вы хотите установить для серии пикселей в a, заданной координатами, одно и то же значение, вы можете сделать следующее:
coord = [1,2; 2,3; 3,4; 4,5; 5,6; 6,7];
ind = sub2ind(size(a), coord(:,1), coord(: 2));
a(ind) = 1;
Вы можете заменить последний 1 вектором с таким количеством элементов, как координаты в coord, чтобы присвоить разные значения каждому пикселю.
Обратите внимание, что MATLAB индексирует строки с первым индексом, поэтому первый столбец coord соответствует координате y.