Проверьте os.makedirs
: (Это удостоверяется, что полный путь существует.)
Для обработки факта каталог мог бы существовать, поймать OSError
. (Если exist_ok
False
(значение по умолчанию), OSError
повышен, если целевой каталог уже существует.)
import os
try:
os.makedirs('./path/to/somewhere')
except OSError:
pass
Невозможно перебрать все созданные вами объекты, если вы не отслеживаете их где-нибудь (например, в конструкторе). Что-то вроде этого-
var globalCatArray = [];
function cat(color, sex){
this.color = color;
this.sex = sex;
globalCatArray.push(this);
}
var fluffball = new cat("blue","male");
var shiznitz = new cat("red","male");
var slothersburger = new cat("green","female");
//use globalCatArray to get all instances
Осторожно. Пока объекты находятся в массиве, они остаются в памяти без сборки мусора. Поэтому, если вы создаете много объектов, вы можете удалить их из массива, как только вы закончите с ним.
Также не используйте for..in
для итерации циклов. См. Это расширение массива Javascript
Вы можете создать своего рода объект CatFactory , предназначенный для создания и отслеживания экземпляров объекта Cat:
Использование:
CatFactory.createCat('fluffball', 'blue','male');
CatFactory.createCat('shiznitz', 'red','male');
CatFactory.createCat('slothersburger', 'green','female');
CatFactory.forEachCat (function () { // forEach abstraction
alert(this.name + ' is ' + this.color);
});
Реализация:
function Cat (name, color, sex){
this.name = name;
this.color = color;
this.sex = sex;
}
CatFactory = {
createCat: function () {
var newCat = {};
Cat.apply(newCat, arguments);
this.allCats.push(newCat);
return newCat;
},
allCats: [],
forEachCat: function (action) {
for (var i = 0; i < this.allCats.length; i++){
action.call(this.allCats[i]);
}
}
};
Следующий код должен помочь. Я использовал следующую формулу для остатков:
residual[i] = (computed_x[i] - actual_x[i])^2
+ (computed_y[i] - actual_y[i])^2
И затем вывел формулы наименьших квадратов на основе общей процедуры , описанной в Wolfram's MathWorld.
Я протестировал этот алгоритм в Excel, и он работает как ожидается. Я использовал набор из десяти случайных точек, которые затем вращались, транслировались и масштабировались с помощью случайно сгенерированной матрицы преобразования.
Без применения случайного шума к выходным данным эта программа создает четыре параметра ( P
, Q
, R
и S
), которые идентичны входным параметрам, и нулевое значение rSquared
.
As все больше и больше случайного шума применяется к выходным точкам, константы начинают отклоняться от правильных значений, var cats = [];
cats[0] = new cat();
cats[0].color = "red";
cats[0].name = "fluffy";
for ( var cur in cats )
{
//Do Things
}
Извините за все правки - сегодня полусонный.