Следующий скрипт дает мне сумму границ каждого элемента матрицы. границы рассчитываются относительно элементов со значением 1, которые находятся рядом друг с другом. произведение этого суммирования называется контактным периметром.
но есть ли другой способ, которым я могу обобщить или векторизовать мой необработанный и простой сценарий? Я задаю этот запрос, потому что моя реальная матрица очень велика, а использование for увеличивает время расчета.
Спасибо.
a1=[1 1 0 1 0 1;
0 1 1 0 0 1;
1 1 0 1 0 1;
1 1 0 0 1 0;
0 0 0 1 1 1]
m=5
n=6
cmp=zeros(m,n)
cmp1=zeros(m,n)
for i=1:m-1
for j=1:n
if a1(i,j)==a1(i+1,j) && a1(i,j)==1
cmp(i,j)=1
end
end
for i=1:m
for j=1:n-1
if a1(i,j)==a1(i,j+1) && a1(i,j)==1
cmp1(i,j)=1
end
end
end
end
cmtotal=cmp+cmp1
pc=sum(sum(cmtotal))