У меня возникли некоторые проблемы с функцией поиска в MATLAB. У меня есть матрица, состоящая из нулей и единиц (представляющих геометрию структурного элемента), где материал присутствует, когда матричный элемент = 1, и где нет материала, когда матричный элемент = 0. Матрица может иметь общий вид показано ниже (оно будет обновляться при изменении геометрии, но это не так уж важно).
Geometry = [0 0 0 0 0 0 0 0 0 0;
0 0 1 0 1 0 1 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 1 0 0;
0 0 0 0 0 0 0 0 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 1 1 1 0 1 0 0;
0 0 0 0 0 0 0 0 0 0;]
Я пытаюсь найти строки и столбцы, которые не связаны непрерывно (т. Е. Где строки и столбцы не равны 1 между внешними экстентами строки или столбца), а затем обновить их, чтобы они все связано. То есть матрица выше становится:
Geometry = [0 0 0 0 0 0 0 0 0 0;
0 0 1 1 1 1 1 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 0 0 0 0 1 0 0;
0 0 1 1 1 1 1 1 0 0;
0 0 0 0 0 0 0 0 0 0;]
Проблема, с которой я столкнулся, заключается в том, что я хочу найти индексы первого и последнего элемента, равные 1, в каждой строке (и столбце), которые затем будут использоваться для обновления матрицы геоемтрии.
В идеале, я хочу представить их в векторах, поэтому, пройдя по столбцам, найдите номер строки первого элемента, равный 1, и сохраните его в векторе с именем rowfirst.
т.е:.
rowfirst = zeros(1,numcols)
for i = 1:numcols % Going across the columns
rowfirst(i) = find(Geometry(i,1) == 1, 1,'first')
% Store values in vector called rowfirst
end
и повторите это для столбцов и найдите последние элементы в каждой строке.
По какой-то причине я не могу получить значения для правильного хранения в векторе, у кого-нибудь есть идея, где я ошибаюсь?
Заранее спасибо. Пожалуйста, дайте мне знать, если это не ясно, поскольку я, возможно, не очень хорошо объяснил проблему.