亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? udu.cpp

?? Bayesian Filter.貝葉斯(Bayesian)濾波器的C++類庫。包括卡爾曼濾波(kalman filter)、粒子濾波(particle filter)等。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* * Bayes++ the Bayesian Filtering Library * Copyright (c) 2002 Michael Stevens * See accompanying Bayes++.htm for terms and conditions of use. * * $Header: /cvsroot/bayesclasses/Bayes++/BayesFilter/UdU.cpp,v 1.24.2.4 2005/01/17 14:00:16 mistevens Exp $ * $NoKeywords: $ *//* * Linear algebra support functions for filter classes * Cholesky and Modified Cholesky factorisations * * UdU' and LdL' factorisations of Positive semi-definate matrices. Where *  U is unit upper triangular *  d is diagonal *  L is unit lower triangular * Storage *  UD(RowMatrix) format of UdU' factor *   strict_upper_triangle(UD) = strict_upper_triangle(U), diagonal(UD) = d, strict_lower_triangle(UD) ignored or zeroed *  LD(LTriMatrix) format of LdL' factor  *   strict_lower_triangle(LD) = strict_lower_triangle(L), diagonal(LD) = d, strict_upper_triangle(LD) ignored or zeroed */#include "bayesFlt.hpp"#include "matSup.hpp"#include <cassert>#include <cmath>/* Filter Matrix Namespace */namespace Bayesian_filter_matrix{template <class V>inline typename V::value_type rcond_internal (const V& D)/* * Estimate the reciprocal condition number of a Diagonal Matrix for inversion. * D represents a diagonal matrix, the parameter is actually passed as a vector * * The Condition Number is defined from a matrix norm. *  Choose max element of D as the norm of the original matrix. *  Assume this norm for inverse matrix is min element D. *  Therefore rcond = min/max * * Note: *  Defined to be 0 for semi-definate and 0 for an empty matrix *  Defined to be 0 for max and min infinite *  Defined to be <0 for negative matrix (D element a value  < 0) *  Defined to be <0 with any NaN element * *  A negative matrix may be due to errors in the original matrix resulting in *   a factorisation producing special values in D (e.g. -infinity,NaN etc) *  By definition rcond <= 1 as min<=max */{	// Special case an empty matrix	const std::size_t n = D.size();	if (n == 0)		return 0;	Vec::value_type rcond, mind = D[0], maxd = 0;	for (std::size_t i = 0; i < n; ++i)	{		Vec::value_type d = D[i];		if (d != d)				// NaN			return -1;		if (d < mind) mind = d;		if (d > maxd) maxd = d;	}	if (mind < 0)				// matrix is negative		return -1;								// ISSUE mind may still be -0, this is progated into rcond	assert (mind <= maxd);		// check sanity		rcond = mind / maxd; 		// rcond from min/max norm	if (rcond != rcond)			// NaN, singular due to (mind == maxd) == (zero or infinity)		rcond = 0;	assert (rcond <= 1);	return rcond;}template <class V>inline typename V::value_type rcond_ignore_infinity_internal (const V& D)/* * Estimate the reciprocal condition number of a Diagonal Matrix for inversion. * Same as rcond_internal except that elements are infinity are ignored * when determining the maximum element. */{	// Special case an empty matrix	const std::size_t n = D.size();	if (n == 0)		return 0;	Vec::value_type rcond, mind = D[0], maxd = 0;	for (std::size_t i = 0; i < n; ++i)	{		Vec::value_type d = D[i];		if (d != d)				// NaN			return -1;		if (d < mind) mind = d;		if (d > maxd && 1/d != 0)	// ignore infinity for maxd			maxd = d;	}	if (mind < 0)				// matrix is negative		return -1;								// ISSUE mind may still be -0, this is progated into rcond    if (maxd == 0)				// singular due to maxd == zero (elements all zero or infinity)		return 0;	assert (mind <= maxd);		// check sanity	rcond = mind / maxd; 		// rcond from min/max norm								// CRITICAL CHECK requires NaN != NaN	if (rcond != rcond)			// NaN, singular due to (mind == maxd) == infinity		rcond = 0;	assert (rcond <= 1);	return rcond;}Vec::value_type UdUrcond (const Vec& d)/* * Estimate the reciprocal condition number for inversion of the original PSD * matrix for which d is the factor UdU' or LdL'. * The original matrix must therefore be diagonal */{	return rcond_internal (d);}RowMatrix::value_type UdUrcond (const RowMatrix& UD)/* * Estimate the reciprocal condition number for inversion of the original PSD * matrix for which UD is the factor UdU' or LdL' * * The rcond of the original matrix is simply the rcond of its d factor * Using the d factor is fast and simple, and avoids computing any squares. */{	assert (UD.size1() == UD.size2());	return rcond_internal (diag(UD));}RowMatrix::value_type UdUrcond (const RowMatrix& UD, std::size_t n)/* * As above but only first n elements are used */{	return rcond_internal (diag(UD,n));}UTriMatrix::value_type UCrcond (const UTriMatrix& UC)/* * Estimate the reciprocal condition number for inversion of the original PSD * matrix for which U is the factor UU' * * The rcond of the original matrix is simply the square of the rcond of diagonal(UC) */{	assert (UC.size1() == UC.size2());	Float rcond = rcond_internal (diag(UC));	// Square to get rcond of original matrix, take care to propogate rcond's sign!	if (rcond < 0)		return -(rcond*rcond);	else		return rcond*rcond;}inline UTriMatrix::value_type UCrcond (const UTriMatrix& UC, std::size_t n)/* * As above but for use by UCfactor functions where only first n elements are used */{	Float rcond = rcond_internal (diag(UC,n));	// Square to get rcond of original matrix, take care to propogate rcond's sign!	if (rcond < 0)		return -(rcond*rcond);	else		return rcond*rcond;}RowMatrix::value_type UdUdet (const RowMatrix& UD)/* * Compute the determinant of the original PSD * matrix for which UD is the factor UdU' or LdL' * Result comes directly from determinant of diagonal in triangular matrices *  Defined to be 1 for 0 size UD */{	const std::size_t n = UD.size1();	assert (n == UD.size2());	RowMatrix::value_type det = 1;	for (std::size_t i = 0; i < n; ++i)	{		det *= UD(i,i);	}	return det;}RowMatrix::value_type UdUfactor_variant1 (RowMatrix& M, std::size_t n)/* * In place Modified upper triangular Cholesky factor of a *  Positive definate or semi-definate matrix M * Reference: A+G p.218 Upper cholesky algorithm modified for UdU' *  Numerical stability may not be as good as M(k,i) is updated from previous results *  Algorithm has poor locality of reference and avoided for large matrices *  Infinity values on the diagonal can be factorised * * Strict lower triangle of M is ignored in computation * * Input: M, n=last std::size_t to be included in factorisation * Output: M as UdU' factor *    strict_upper_triangle(M) = strict_upper_triangle(U) *    diagonal(M) = d *    strict_lower_triangle(M) is unmodifed * Return: *    reciprocal condition number, -1 if negative, 0 if semi-definate (including zero) */{	std::size_t i,j,k;	RowMatrix::value_type e, d;	if (n > 0)	{		j = n-1;		do {			d = M(j,j);			// Diagonal element			if (d > 0)			{	// Positive definate				d = 1 / d;				for (i = 0; i < j; ++i)				{					e = M(i,j);					M(i,j) = d*e;					for (k = 0; k <= i; ++k)					{						RowMatrix::Row Mk(M,k);						Mk[i] -= e*Mk[j];					}				}			}			else if (d == 0)			{	// Possibly Semidefinate, check not negative				for (i = 0; i < j; ++i)				{					if (M(i,j) != 0)						goto Negative;				}			}			else			{	// Negative				goto Negative;			}		} while (j-- > 0);	}	// Estimate the reciprocal condition number	return rcond_internal (diag(M,n));Negative:   return -1;}RowMatrix::value_type UdUfactor_variant2 (RowMatrix& M, std::size_t n)/* * In place Modified upper triangular Cholesky factor of a *  Positive definate or semi-definate matrix M * Reference: A+G p.219 right side of table *  Algorithm has good locality of reference and preferable for large matrices *  Infinity values on the diagonal cannot be factorised * * Strict lower triangle of M is ignored in computation * * Input: M, n=last std::size_t to be included in factorisation * Output: M as UdU' factor *    strict_upper_triangle(M) = strict_upper_triangle(U) *    diagonal(M) = d *    strict_lower_triangle(M) is unmodifed * Return: *    reciprocal condition number, -1 if negative, 0 if semi-definate (including zero) */{	std::size_t i,j,k;	RowMatrix::value_type e, d;	if (n > 0)	{		j = n-1;		do {			RowMatrix::Row Mj(M,j);			d = Mj[j];			// Diagonal element			if (d > 0)			{	// Positive definate				i = j;				do				{					RowMatrix::Row Mi(M,i);					e = Mi[j];					for (k = j+1; k < n; ++k)					{						e -= Mi[k]*M(k,k)*Mj[k];					}					if (i == j) {						Mi[j] = d = e;		// Diagonal element					}					else {						Mi[j] = e / d;					}				} while (i-- > 0);			}			else if (d == 0)			{	// Possibly Semidefinate, check not negative, whole row must be identically zero				for (k = j+1; k < n; ++k)				{					if (Mj[k] != 0)						goto Negative;				}			}			else			{	// Negative				goto Negative;			}		} while (j-- > 0);	}	// Estimate the reciprocal condition number	return rcond_internal (diag(M,n));Negative:   return -1;}LTriMatrix::value_type LdLfactor (LTriMatrix& M, std::size_t n)/* * In place Modified lower triangular Cholesky factor of a *  Positive definate or semi-definate matrix M * Reference: A+G p.218 Lower cholesky algorithm modified for LdL' * * Input: M, n=last std::size_t to be included in factorisation * Output: M as LdL' factor *    strict_lower_triangle(M) = strict_lower_triangle(L) *    diagonal(M) = d * Return: *    reciprocal condition number, -1 if negative, 0 if semi-definate (including zero) * ISSUE: This could change to equivilient of UdUfactor_varient2 */{	std::size_t i,j,k;	LTriMatrix::value_type e, d;	for (j = 0; j < n; ++j)	{		d = M(j,j);		// Diagonal element		if (d > 0)		{			// Positive definate			d = 1 / d;			for (i = j+1; i < n; ++i)			{				e = M(i,j);				M(i,j) = d*e;				for (k = i; k < n; ++k)				{					LTriMatrix::Row Mk(M,k);					Mk[i] -= e*Mk[j];				}			}		}		else if (d == 0)		{			// Possibly Semidefinate, check not negative			for (i = j+1; i < n; ++i)			{				if (M(i,j) != 0)					goto Negative;			}		}		else		{			// Negative			goto Negative;		}	}	// Estimate the reciprocal condition number	return rcond_internal (diag(M,n));Negative:	return -1;}UTriMatrix::value_type UCfactor (UTriMatrix& M, std::size_t n)/* * In place Upper triangular Cholesky factor of a *  Positive definate or semi-definate matrix M * Reference: A+G p.218 * Strict lower triangle of M is ignored in computation * * Input: M, n=last std::size_t to be included in factorisation * Output: M as UC*UC' factor *    upper_triangle(M) = UC * Return: *    reciprocal condition number, -1 if negative, 0 if semi-definate (including zero) */{	std::size_t i,j,k;	UTriMatrix::value_type e, d;	if (n > 0)	{		j = n-1;		do {			d = M(j,j);			// Diagonal element			if (d > 0)			{				// Positive definate				d = std::sqrt(d);				M(j,j) = d;				d = 1 / d;				for (i = 0; i < j; ++i)				{					e = d*M(i,j);					M(i,j) = e;					for (k = 0; k <= i; ++k)					{						UTriMatrix::Row Mk(M,k);						Mk[i] -= e*Mk[j];					}				}			}			else if (d == 0)			{				// Possibly Semidefinate, check not negative				for (i = 0; i < j; ++i)				{					if (M(i,j) != 0)						goto Negative;				}			}			else			{				// Negative				goto Negative;			}		} while (j-- > 0);	}	// Estimate the reciprocal condition number	return UCrcond (M,n);Negative:   return -1;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频中文一区二区三区在线观看 | 三级影片在线观看欧美日韩一区二区| 91精品国产91久久久久久一区二区| 韩国在线一区二区| 一区二区在线观看av| 欧美成人官网二区| 在线欧美小视频| 国产一区二区美女| 五月综合激情婷婷六月色窝| 国产精品久久久久久久久免费桃花| 欧美精品免费视频| 成人理论电影网| 精品一区二区三区在线播放 | 国产精一区二区三区| 亚洲一二三专区| 国产精品家庭影院| 精品久久久久99| 欧美区一区二区三区| 色综合久久综合网97色综合| 国产+成+人+亚洲欧洲自线| 全部av―极品视觉盛宴亚洲| 亚洲欧美另类综合偷拍| 亚洲国产激情av| 精品国产sm最大网站| 欧美日本国产视频| 欧美在线你懂的| 91蜜桃传媒精品久久久一区二区 | 欧美三级电影网站| 99精品在线免费| 岛国av在线一区| 国产裸体歌舞团一区二区| 免费观看久久久4p| 肉肉av福利一精品导航| 亚洲国产一区视频| 一区二区三区日韩欧美| 亚洲精品一二三| 亚洲精品老司机| 亚洲精品国产无套在线观| 国产欧美精品一区二区色综合| 久久久91精品国产一区二区三区| 欧美一区二区福利在线| 欧美精品一卡两卡| 欧美日高清视频| 欧美日本不卡视频| 制服丝袜亚洲色图| 日韩欧美卡一卡二| 久久影视一区二区| 欧美精品一区二区久久婷婷| 精品电影一区二区三区| 26uuu国产日韩综合| 精品免费视频一区二区| 久久精品亚洲麻豆av一区二区| 精品盗摄一区二区三区| 国产欧美一区二区在线| 中文字幕巨乱亚洲| 亚洲日本成人在线观看| 亚洲午夜电影在线观看| 亚洲h在线观看| 看电影不卡的网站| 国产一区二区三区免费在线观看 | 国产呦精品一区二区三区网站| 国产综合色视频| 成人激情校园春色| 在线观看日韩一区| 91精品福利在线一区二区三区| 欧美精品一区二区三区高清aⅴ| 中文字幕av一区二区三区高| 亚洲欧美日韩系列| 日韩电影在线免费看| 国产麻豆视频一区| 91极品视觉盛宴| 欧美电视剧在线看免费| 久久九九影视网| 伊人婷婷欧美激情| 蜜桃av噜噜一区| 9i在线看片成人免费| 欧美日韩一卡二卡| 久久网这里都是精品| 亚洲日本va午夜在线电影| 丝袜a∨在线一区二区三区不卡| 韩国av一区二区三区四区| 波多野结衣亚洲| 91精品国产一区二区三区香蕉| 久久精品免费在线观看| 一区二区三区在线视频免费观看| 日韩av电影天堂| 北条麻妃国产九九精品视频| 欧美日韩激情一区二区三区| 国产亚洲成aⅴ人片在线观看| 一区二区三区在线播| 国产精品99久久久久久久vr| 欧美亚洲综合一区| 国产精品理论在线观看| 麻豆专区一区二区三区四区五区| 日韩一区二区三区视频在线 | 亚洲国产cao| 国产自产高清不卡| 欧美日韩精品一区二区三区蜜桃| 久久嫩草精品久久久精品| 一区二区三区国产豹纹内裤在线| 韩国av一区二区三区四区| 欧美色网一区二区| 国产精品久久久久一区 | 国产精品香蕉一区二区三区| 欧美美女网站色| 中文字幕一区二区三区视频| 蜜桃av一区二区三区| 91国产成人在线| 国产农村妇女精品| 狠狠狠色丁香婷婷综合激情| 欧美精品aⅴ在线视频| 悠悠色在线精品| 91丨九色丨黑人外教| 国产婷婷一区二区| 国产在线精品不卡| 欧美一级一区二区| 亚洲国产精品一区二区久久| 成人精品视频一区| 久久久久高清精品| 精彩视频一区二区三区| 69堂亚洲精品首页| 亚洲一二三区不卡| 91黄色免费看| 亚洲人快播电影网| www.日韩av| 中文字幕成人av| 福利一区二区在线| 久久久久99精品一区| 国产精品自拍av| 2017欧美狠狠色| 国产成人精品午夜视频免费| 久久人人爽人人爽| 国产一区二区三区香蕉| 久久久亚洲午夜电影| 国产一区二区看久久| 久久久综合激的五月天| 国产福利精品导航| 国产亚洲污的网站| 国产精品1024久久| 日本一区二区三区国色天香| 国产91富婆露脸刺激对白| 欧美精彩视频一区二区三区| 高清视频一区二区| 国产精品美女久久久久高潮 | 欧美一卡二卡在线| 青青草国产成人99久久| 日韩女优视频免费观看| 国产在线一区二区| 国产欧美一区二区三区在线老狼| 粉嫩一区二区三区在线看| 国产精品美女www爽爽爽| 91丨porny丨在线| 亚洲国产精品影院| 欧美va亚洲va香蕉在线| 国产在线精品免费av| 国产精品美女久久久久aⅴ| 日本久久一区二区三区| 香蕉影视欧美成人| 久久日韩精品一区二区五区| 丁香婷婷综合网| 一区二区三区四区在线播放| 在线播放视频一区| 国产一区二区三区不卡在线观看 | 亚洲精品免费在线观看| 欧美日韩高清一区| 精品午夜一区二区三区在线观看| 国产日韩欧美精品综合| 91同城在线观看| 丝袜诱惑制服诱惑色一区在线观看| 这里只有精品99re| 国产一区三区三区| 综合久久久久综合| 欧美一区2区视频在线观看| 国产成人aaa| 亚洲成a人片在线不卡一二三区| 欧美一区二区三区在线观看视频| 国产精品亚洲午夜一区二区三区| 亚洲三级免费电影| 精品国产免费视频| 在线视频欧美区| 精品一区二区免费| 亚洲日本在线天堂| 欧美tickling挠脚心丨vk| 99久久er热在这里只有精品66| 欧美a级理论片| 亚洲色图都市小说| 日韩一区二区三免费高清| 波波电影院一区二区三区| 男女视频一区二区| ●精品国产综合乱码久久久久| 日韩一级片网址| 色嗨嗨av一区二区三区| 国产在线看一区| 日韩av一区二区在线影视| 国产精品国产三级国产a| 日韩精品专区在线影院重磅| 日本韩国欧美一区| 国产乱码精品一区二区三区av| 亚洲妇熟xx妇色黄| 中文字幕制服丝袜一区二区三区|