WedX - журнал о программировании и компьютерных науках

Моделирование лесного пожара в Octave или Matlab

На этой странице https://courses.cit.cornell.edu/bionb441/CA/forest.m

Я нашел код под названием «Лесной пожар». Я пытаюсь понять, как этот код работает в образовательных целях.

Вот правила:

Ячейки могут находиться в 3 различных состояниях. Состояние = 0 пусто, состояние = 1 горит, а состояние = 2 — лес.

Если один или несколько из 4-х соседей ячейки горят и это лес (состояние = 2), то новое состояние горит (состояние = 1).

Ячейка, которая горит (состояние = 1), становится пустой (состояние = 0).

Существует низкая вероятность (0,000005) того, что ячейка леса (состояние = 2) начнет гореть сама по себе (от молнии).

Существует низкая вероятность (скажем, 0,01) того, что пустая ячейка станет лесом для имитации роста.

что то не очень понятно как это работает...

sum = (veg(1:n,[n 1:n-1])==1) + (veg(1:n,[2:n 1])==1) + ...
       (veg([n 1:n-1], 1:n)==1) + (veg([2:n 1],1:n)==1) ;

veg = 2*(veg==2) - ((veg==2) & (sum> 0 | (rand(n,n)< Plightning))) + ...
     2*((veg==0) & rand(n,n)< Pgrowth) ;

Нет проблем с запуском кода, просто я не понимаю, что это за векторы (sum и veg). Особенно то, что делает (veg(1:n,[n 1:n-1])==1).

Что я вижу, так это то, что оба являются матрицами, а овощи - это данные графика (матрица с 0, 1 и 2).

Я очень ценю любую помощь, которую вы можете предоставить.


  • Какая у вас проблема/ошибка? Пожалуйста обновите. 03.04.2015

Ответы:


1

Двоичные операторы сравнения матрицы и скаляра возвращают матрицу элементов этого двоичного сравнения со скаляром и соответствующим элементом исходной матрицы.

sum — это матрица, в которой каждая ячейка содержит количество соседних ячеек в соответствующей матрице veg, которые горят (==1).

(veg(1:n,[n 1:n-1])==1) — это матрица логических единиц и нулей (я не знаю, является ли тип данных статическим или динамическим) в котором каждая ячейка равна 1, когда ячейка слева от соответствующей ячейки в veg горит (==1).

15.04.2015

2

https://courses.cit.cornell.edu/bionb441/CA/

Посмотрите на URL, вернитесь вверх по дереву, чтобы увидеть источник.

Правило: ячейки могут находиться в 3 разных состояниях. Состояние = 0 пусто, состояние = 1 горит, а состояние = 2 — лес. Если горит один или несколько из 4 соседей, если ячейка горит и это лес (состояние = 2), то новое состояние горит (состояние = 1). Существует низкая вероятность (скажем, 0,000005) того, что ячейка леса (состояние = 2) начнет гореть сама по себе (от молнии). Ячейка, которая горит (состояние = 1), становится пустой (состояние = 0). Существует низкая вероятность (скажем, 0,01) того, что пустая ячейка станет лесом для имитации роста. Массив считается тороидально соединенным, так что огонь, который горит с левой стороны, начнет возгорание с правой стороны. Верх и низ соединяются аналогично. Код обновления:

sum = (veg(1:n,[n 1:n-1])==1) + (veg(1:n,[2:n 1])==1) + ...
       (veg([n 1:n-1], 1:n)==1) + (veg([2:n 1],1:n)==1) ;

veg = ...
     2*(veg==2) - ((veg==2) & (sum> 0 | (rand(n,n)< Plightning))) + ...
     2*((veg==0) & rand(n,n)< Pgrowth) ;

Обратите внимание, что тороидальное соединение реализовано порядком индексов.

20.02.2016
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

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

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]