Это что-то вроде хака и должно использоваться только в случаях, подобных разоблаченному в OP , но
Во всех реализациях используются целые числа как timerid ] , которые просто увеличиваются при каждом вызове.
Так что вы можете сделать, это очистить все тайм-ауты, которые были созданы на странице.
Для этого вам нужно сначала узнать, какой у нас таймрид, а затем вызывать cleatTimeout или clearInterval (они делают то же самое) в цикле, пока не достигнете последнего вызова:
function stopAllTimers() {
const timerid = setTimeout(_=>{}); // first grab the current id
let i=0;
while(i < timerid) {
clearTimeout(i); // clear all
i++;
}
};
btn.onclick = stopAllTimers;
// some stoopid orphan intervals
setInterval(()=>console.log('5000'), 5000);
setInterval(()=>console.log('1000'), 1000);
setInterval(()=>console.log('3000'), 3000);
const recursive = () => {
console.log('recursive timeout');
setTimeout(recursive, 5000);
};
recursive();
Как упоминается в книге (раздел 12.2), p i T являются строк из P . Следовательно, вам не нужно транспонировать P1 (k,:)
(т.е. правильная формулировка: A = [xhat1 (1) * P1 (3, :) - P1 (1 ,: ); ...
).
Надеюсь, это была опечатка.
Кроме того, рекомендуется нормализовать каждую строку A
с ее нормой L2, то есть для всех i
A (i, :) = A (i,:) / norm (A (i,:));
И если вы хотите построить триангулированные трехмерные точки, вы должны нормализовать Xhat
перед построением (в противном случае это бессмысленно), то есть
Xhat = Xhat / Xhat (4);
A(1,:) = A(1,:)/norm(A(1,:));
A(2,:) = A(2,:)/norm(A(2,:));
A(3,:) = A(3,:)/norm(A(3,:));
A(4,:) = A(4,:)/norm(A(4,:));
Мог быть упрощен как A = normr(A)
.