По сути, я пытаюсь создать фрактальный паттерн, который расширяется от определенной точки в массиве, как показано на рисунке Фрактальный паттерн .Теперь, чтобы сделать это, я создал два файла: функциональный файл, который определяет, какие индексы мне следует изменить, и основной файл, который имеет дело с изменением этих значений индексов на единицу (другие функции, возможно, должны быть добавлены, поэтому причина, по которой я имеюдва файла).
Условия для фрактала:
- фрактал распространяется прямо на север, юг, восток и запад от исходного элемента.
- Элементы могут иметь только одинсосед.
Теперь давайте предположим, что я хочу создать фрактальный паттерн размером 60x60 и начальные значения которого равны (30,30). Для моего функционального файла в настоящее время у меня есть:
function Fout = fractalfunc(inputmatrix)
for row = 1:60
for col = 1:60 %go through matrix element by element
if inputmatrix(row,col) == 1
if inputmatrix(row-1,col)==0 && inputmatrix(row-1,col-1)==0 && inputmatrix(row-1,col+1)==0 %Checks North, NorthWest and NorthEast elements
%Not sure what code should go here, trying to store my Fout
%values in a nx2 matrix which essentially contains the indices
%elements from the input matrix that need to be changed to 1.
end
if inputmatrix(row,col+1)==0 && inputmatrix(row-1,col+1)==0 && inputmatrix(row+1,col+1)==0 %Checks East, NorthEast and SouthEast elements
%Not sure what code should go here, trying to store my Fout
%values in a nx2 matrix which essentially contains the indices
%elements from the input matrix that need to be changed to 1.
end
if inputmatrix(row+1,col)==0 && inputmatrix(row+1,col-1)==0 && inputmatrix(row+1,col+1)==0 %Checks South, SouthWest and SouthEast elements
%Not sure what code should go here, trying to store my Fout
%values in a nx2 matrix which essentially contains the indices
%elements from the input matrix that need to be changed to 1.
end
if inputmatrix(row,col-1)==0 && inputmatrix(row-1,col-1)==0 && inputmatrix(row+1,col-1)==0 %Checks West, NorthWest and SouthWest elements
%Not sure what code should go here, trying to store my Fout
%values in a nx2 matrix which essentially contains the indices
%elements from the input matrix that need to be changed to 1.
end
end
end
end
end
MyОсновной файл имеет:
dims = 60;
mat1 = zeros(dims,dims);
mat1(round(dims/2), round(dims/2)) = 1;
for m = 1:63 % Number of iterations through fractal
changeindices = fractalfunc(mat1);
for k = 1:length(changeindices)
mat1(changeindices(k,1), changeindices(k,2)) = 1; % Change pixel to one
end
figure(2),colormap(jet(8)),image(mat1)
pause(0.01)
%Show result (in the loop will look like animation)
end
Вещи, с которыми я борюсь:
- Выходные значения из определяемой пользователем функции должны быть электронной таблицей nx2, где они заполняются значениямиот определенных элементов индекса, которые удовлетворяют заявлениям IF.На самом деле не уверен, как это сделать, как, например, когда все пять моих операторов IF верны в строке = 30 и col = 30, тогда Fout = [29 30;30 31; 31 30; 30 29], и это фактически повторяет создание списка.
-Как перезапустить цикл, например, после того, как он достигнет первого 1 в (30,30), он обновитновые компоненты: север, восток, юг, запад, а затем я хочу, чтобы операторы if были выполнены для этих новых элементов, использующих шаблон для распространения.
Заранее спасибо :) (Я уже много писал, я знаю, что действительно новичок в MATLAB, любой совет приветствуется)