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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? operator.cpp.svn-base

?? 卡爾曼濾波的實現
?? SVN-BASE
字號:
#include "operator.h"

Matrix* initMatrix(int x,int y)
{
	int i;
	Matrix* mat;
	mat=new Matrix;
	mat->row=x;
	mat->column=y;
	mat->data=new float [x*y];
	for(i=0;i<x*y;i++)
		*(mat->data+i)=0;
	return mat;
}

Kalman* initKalman(int D,int M,int C)
{
	int i,j;
	Kalman* kal;
	kal=new Kalman;
	kal->DP=D;
	kal->MP=M;
	kal->CP=C;
	kal->lastP=initMatrix(D,D);//waiting for a better value instead of 0
    kal->lastState=initMatrix(D,1);//waiting for a better value instead of 0
	kal->preState=initMatrix(D,1);
	kal->modifyState=initMatrix(D,1);
    kal->contol=initMatrix(C,1);
	kal->measurement=initMatrix(M,1);
	kal->P_pre=initMatrix(D,D);
	kal->P_modify=initMatrix(D,D);
	kal->Kg=initMatrix(D,M);
	kal->A=initMatrix(D,D);//waiting for a better value instead of 1
	kal->B=initMatrix(D,C);
    kal->H=initMatrix(M,M);//waiting for a better value instead of 1
	kal->Q=initMatrix(D,D);//waiting for a better value instead of 0
	kal->R=initMatrix(M,M);//waiting for a better value instead of 0
	kal->I=initMatrix(M,M);
	for(i=0;i<M;i++)
		for(j=0;j<M;j++)
			if(i==j)
				kal->I->data[i*M+j]=1;
	return kal;
}
void releaseMatrix(Matrix* mat)
{
	delete mat->data;
	delete mat;
}
void releaseKalman(Kalman* kal)
{
	releaseMatrix(kal->lastP);
	releaseMatrix(kal->lastState);
    releaseMatrix(kal->preState);
	releaseMatrix(kal->modifyState);
	releaseMatrix(kal->contol);
	releaseMatrix(kal->measurement);
	releaseMatrix(kal->P_pre);
	releaseMatrix(kal->P_modify);
	releaseMatrix(kal->Kg);
	releaseMatrix(kal->A);
	releaseMatrix(kal->B);
	releaseMatrix(kal->H);
	releaseMatrix(kal->Q);
	releaseMatrix(kal->R);
	releaseMatrix(kal->I);
	delete kal;
}

Matrix* matMultiple(Matrix* mat1,Matrix* mat2)
{
	int i,j,k;
	if(mat1->column==mat2->row)
	{
		Matrix*temp;
		temp=initMatrix(mat1->row,mat2->column);
        for(i=0;i<mat1->row;i++)
		{
			for(j=0;j<mat2->column;j++)
			{
				for(k=0;k<mat1->column;k++)
				{
					*(temp->data+i*mat2->column+j)+=(*(mat1->data+i*mat1->column+k))*(*(mat2->data+k*mat2->column+j));
				}
			}
		}
		return temp;
	}
	else
	{
		printf("ERROR:Can't computing for the size of the two mat error!\n");
		return NULL;
	}
}

Matrix* matDiff(Matrix* mat1,Matrix* mat2)
{
	int i,j;
	if((mat1->row==mat2->row)&&(mat1->column==mat2->column))
	{
		Matrix* temp;
		temp=initMatrix(mat1->row,mat2->column);
		for(i=0;i<mat1->row;i++)
		{
			for(j=0;j<mat2->column;j++)
			{
				temp->data[i*mat1->column+j]=mat1->data[i*mat1->column+j]/mat2->data[i*mat2->column+j];
			}
		}
		return temp;

	}
	else
	{
	    printf("ERROR:Can't computing for the size of the two mat error!\n");
		return NULL;
	}
}


Matrix* matPlus(Matrix* mat1,Matrix* mat2)
{
	int i,j;
	if((mat1->row==mat2->row)&&(mat1->column==mat2->column))
	{
		Matrix* temp;
		temp=initMatrix(mat1->row,mat2->column);
		for(i=0;i<mat1->row;i++)
		{
			for(j=0;j<mat2->column;j++)
			{
				temp->data[i*mat1->column+j]=mat1->data[i*mat1->column+j]+mat2->data[i*mat2->column+j];
			}
		}
		return temp;

	}
	else
	{
	    printf("ERROR:Can't computing for the size of the two mat error!\n");
		return NULL;
	}
}

Matrix* matMinus(Matrix* mat1,Matrix* mat2)
{
	int i,j;
	if((mat1->row==mat2->row)&&(mat1->column==mat2->column))
	{
		Matrix* temp;
		temp=initMatrix(mat1->row,mat2->column);
		for(i=0;i<mat1->row;i++)
		{
			for(j=0;j<mat2->column;j++)
			{
				temp->data[i*mat1->column+j]=mat1->data[i*mat1->column+j]-mat2->data[i*mat2->column+j];
			}
		}
		return temp;

	}
	else
	{
	    printf("ERROR:Can't computing for the size of the two mat error!\n");
		return NULL;
	}
}

Matrix* matTranspose(Matrix* mat)
{
	int i,j;
	if(mat->row==mat->column)
	{
		Matrix* temp;
		temp=initMatrix(mat->row,mat->column);
		for(i=0;i<mat->row;i++)
		{
			for(j=0;j<mat->column;j++)
			{
				temp->data[j*mat->row+i]=mat->data[i*mat->column+j];
			}
		}
		return temp;
	}
    else
	{
		printf("ERROR:Can't computing for the size of the two mat error!\n");
		return NULL;
	}
}

void valuechange(Matrix* mat1,Matrix* mat2)
{
	if((mat1->row==mat2->row)&&(mat1->column==mat2->column))
	{
		int i;
		for(i=0;i<mat1->row*mat2->column;i++)
			mat1->data[i]=mat2->data[i];
	}
	else
	    printf("ERROR:Can't computing for the size of the two mat error!\n");

}

float DeterminantValue(Matrix* mat)
{
	if((mat->column==mat->row)&&(mat->column==2))
	{
		return mat->data[0]*mat->data[3]-mat->data[1]*mat->data[2];
	}
	else
		if((mat->column==mat->row)&&(mat->column==3))
		{
			return mat->data[0]*mat->data[4]*mat->data[8]+mat->data[2]*mat->data[3]*mat->data[7]+mat->data[1]*mat->data[5]*mat->data[6]-mat->data[2]*mat->data[4]
			*mat->data[6]-mat->data[1]*mat->data[3]*mat->data[8]-mat->data[0]*mat->data[5]*mat->data[7];
		}
		else
			printf("ERROR:Can't computing for the size of the two mat error!\n");
			
}

Matrix* getLeftMatrix(Matrix* mat,int ro ,int co)
{
	int i,j;
	int k=0;
	Matrix* temp;
	temp=initMatrix(mat->column-1,mat->column-1);
	for(i=0;i<mat->column;i++)
	{
		for(j=0;j<mat->column;j++)
		{
			if((i!=ro)&&(j!=co))
			{
				temp->data[k]=mat->data[i*mat->column+j];
				k++;
			}
		}
	}
	return temp;

}

Matrix* getInverseMatrix(Matrix* mat)
{
	int i,j;
	float k;
	Matrix* temp;
	temp=initMatrix(mat->column,mat->row);
	if(DeterminantValue(mat)!=0)
	{
	for(i=0;i<mat->column;i++)
	{
		for(j=0;j<mat->column;j++)
		{
			if((i+j)%2==0)
				k=1;
			else
				k=-1;
		    temp->data[i*mat->column+j]=(k*DeterminantValue(getLeftMatrix(mat,j,i)))/DeterminantValue(mat);
		}
	}
	return temp;
	}
	else
	{
		printf("ERROR:the Matrix has no inverse matrix!\n");
		return NULL;
	}
}

void KalmanFilter(Kalman* kal,Matrix* measure)
{

    if(measure!=NULL)
	{
        valuechange(kal->measurement,measure);
		valuechange(kal->preState,matMultiple(kal->A,kal->lastState));
		valuechange(kal->P_pre,matPlus(kal->Q,matMultiple(kal->A,matMultiple(kal->lastP,matTranspose(kal->A)))));
		valuechange(kal->Kg,matMultiple(matMultiple(kal->P_pre,matTranspose(kal->H)),getInverseMatrix(matPlus(kal->R,matMultiple(kal->H,matMultiple(kal->P_pre,matTranspose(kal->H)))))));
        valuechange(kal->modifyState,matPlus(kal->preState,matMultiple(kal->Kg,matMinus(kal->measurement,matMultiple(kal->H,kal->preState)))));
        valuechange(kal->P_modify,matMultiple(matMinus(kal->I,matMultiple(kal->Kg,kal->H)),kal->P_pre));
	}
		
}

void KalmanReadyForNext(Kalman* kal)
{
	valuechange(kal->lastP,kal->P_modify);
	valuechange(kal->lastState,kal->modifyState);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区中文字幕| 精品对白一区国产伦| 粉嫩av亚洲一区二区图片| 亚洲mv大片欧洲mv大片精品| 一区二区三区美女| 欧美韩国日本不卡| 亚洲国产精品精华液ab| 亚洲精品一区二区三区在线观看| 91精品国产91久久综合桃花| 欧美美女激情18p| 欧美顶级少妇做爰| 日韩欧美国产麻豆| 日韩情涩欧美日韩视频| 欧美一级欧美一级在线播放| 欧美一区二区三区白人| 欧美一区二区三区婷婷月色| 欧美一区二区三区视频在线观看| 这里是久久伊人| 欧美成人精精品一区二区频| 精品国产免费视频| 欧美国产1区2区| 亚洲视频综合在线| 亚洲v中文字幕| 麻豆国产精品官网| 国产综合色产在线精品| 高清在线观看日韩| 91久久精品一区二区三区| 在线免费av一区| 日韩亚洲欧美一区二区三区| 精品福利一区二区三区| 日本一区二区三区视频视频| 亚洲欧美日韩国产中文在线| 亚洲国产精品一区二区www在线| 视频一区在线播放| 国产精品1区二区.| 欧美性生活一区| 日韩欧美国产电影| 亚洲欧美另类久久久精品| 日韩高清一区二区| 成人免费看视频| 欧美麻豆精品久久久久久| 久久男人中文字幕资源站| 亚洲欧美区自拍先锋| 琪琪久久久久日韩精品| 成人午夜av在线| 欧美丰满美乳xxx高潮www| 国产日韩综合av| 日韩国产高清在线| 97se狠狠狠综合亚洲狠狠| 56国语精品自产拍在线观看| 国产精品三级电影| 日本麻豆一区二区三区视频| 99在线热播精品免费| 日韩一区二区免费视频| 亚洲精品乱码久久久久久黑人| 免费高清成人在线| 在线中文字幕一区二区| 国产午夜精品久久| 美女在线视频一区| 91久久精品午夜一区二区| 久久久亚洲精品石原莉奈| 亚洲二区在线视频| 91香蕉国产在线观看软件| 久久先锋资源网| 欧美aa在线视频| 欧美日韩日日摸| 亚洲乱码国产乱码精品精可以看| 国产精品一区二区久久精品爱涩| 欧美日韩亚洲丝袜制服| 亚洲欧美一区二区久久 | 国产精品成人一区二区三区夜夜夜| 天天综合色天天综合| 日韩一区二区三区视频在线观看| 亚洲乱码国产乱码精品精98午夜 | 蜜臀av性久久久久蜜臀av麻豆| 99久久久久免费精品国产 | 国产伦精品一区二区三区免费| 欧美日韩在线播放三区| 亚洲黄色小说网站| 91丨九色丨黑人外教| 国产精品超碰97尤物18| 成人精品视频一区| 国产欧美日韩精品a在线观看| 黄色精品一二区| 日韩欧美在线网站| 久久精品免费看| 欧美电影免费观看高清完整版 | 欧美日韩精品欧美日韩精品一| 亚洲人成亚洲人成在线观看图片 | 91在线视频官网| 中文字幕一区二区三区乱码在线| 国产成人aaa| 青青草97国产精品免费观看无弹窗版 | 99视频在线观看一区三区| 国产精品色眯眯| 色综合久久综合| 亚洲一区二区视频在线| 欧美久久一二区| 奇米影视一区二区三区小说| 日韩情涩欧美日韩视频| 国产美女精品在线| 中文字幕一区二区三区在线观看| 99久久久无码国产精品| 亚洲二区在线视频| 精品日韩一区二区三区| 国产成人在线视频网址| 国产精品女主播av| 91福利视频在线| 麻豆精品视频在线观看视频| 国产视频一区二区三区在线观看| 成人av网站在线观看免费| 亚洲自拍偷拍麻豆| 精品国产免费久久| 91小视频免费观看| 精品一区二区三区在线观看| 国产精品久久久久久久午夜片 | 91亚洲精品久久久蜜桃网站| 亚洲va欧美va天堂v国产综合| 精品久久久久久久久久久久久久久久久| 国产乱子伦视频一区二区三区| 亚洲图片激情小说| 日韩一级免费观看| 97久久精品人人爽人人爽蜜臀| 五月综合激情网| 国产精品网站在线| 日韩午夜电影av| 91浏览器打开| 国产美女精品在线| 日韩主播视频在线| 成人欧美一区二区三区小说| 日韩欧美国产麻豆| 91色视频在线| 国产精品系列在线观看| 石原莉奈在线亚洲二区| 成人免费一区二区三区视频 | 日韩一级成人av| 色呦呦网站一区| 国产成人精品亚洲777人妖 | 日本不卡高清视频| 亚洲裸体xxx| 国产精品女人毛片| 久久综合狠狠综合久久综合88| 欧美色成人综合| 91免费观看视频| 成人午夜电影网站| 国产精品自拍网站| 毛片av一区二区| 日韩影院在线观看| 夜夜爽夜夜爽精品视频| 亚洲三级电影全部在线观看高清| 2023国产精品视频| 欧美一区二区视频在线观看2020| 在线精品国精品国产尤物884a| aaa亚洲精品一二三区| 国产成人精品免费网站| 精品亚洲porn| 激情深爱一区二区| 国内外成人在线视频| 激情亚洲综合在线| 国产自产高清不卡| 国产一区二区三区黄视频| 久久精品国产99| 国内久久婷婷综合| 国产成人免费在线视频| 成人性生交大片免费| 成人app软件下载大全免费| 成人国产精品免费网站| 9i在线看片成人免费| 91在线porny国产在线看| 色婷婷av一区二区三区大白胸 | 色偷偷88欧美精品久久久| 91麻豆视频网站| 欧美性一二三区| 欧美日韩精品电影| 日韩欧美电影在线| 久久久久久久久久久黄色| 国产精品入口麻豆原神| 亚洲视频中文字幕| 亚洲成年人网站在线观看| 日韩福利视频网| 国产麻豆视频一区二区| 不卡一卡二卡三乱码免费网站| 色一情一乱一乱一91av| 欧美日韩国产高清一区| 精品欧美黑人一区二区三区| 国产日韩欧美一区二区三区乱码| 最新日韩av在线| 午夜电影网亚洲视频| 亚洲综合色区另类av| 欧美激情在线免费观看| 青青草97国产精品免费观看| 欧美r级电影在线观看| 日韩视频中午一区| 国产欧美精品一区二区色综合| 国产精品久久久久aaaa| 日韩中文欧美在线| 国产iv一区二区三区| 欧美精品在欧美一区二区少妇 | 国产亚洲人成网站| 亚洲一区免费在线观看|