⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 equaltionset.cpp

📁 声音的线性预测编码和解码
💻 CPP
字号:
#include "stdafx.h"
#include ".\equaltionset.h"

EqualtionSet::EqualtionSet(WORD wDimension_in,float * prAMatrix_in,float * prBVector_in,float * prXVector_out)
{
	this->wDimension = wDimension_in;
	this->prAMatrix = prAMatrix_in;
	this->prBVector = prBVector_in;
	//client should get result through preXVector_out pointer
	this->prXVector = prXVector_out;
}

EqualtionSet::~EqualtionSet(void)
{
}

void EqualtionSet::Compute()
{
	int i,j,k;
	float ratio;
	//compute line from 0 to wDimesion - 1
	for(i = 0;i < wDimension;i ++)
		//set diagonal-down triangle matrix to 0 by making row transformation
		//	on all the lines under line i
		for(j = i + 1;j < wDimension; j++)
		{
			//compute ratio which can set line j's i element to zero
			ratio = prAMatrix[j * wDimension + i] / prAMatrix[i * wDimension + i];
			//use ration to set couterpart in B vector
			prBVector[j] -= prBVector[i] * ratio;
			//setting line j's i element to zero avoid float's error in computing
			prAMatrix[j * wDimension + i] = 0.0;
			//compute couterpart in the rest part on line j;
			for(k = i+1;k < wDimension; k++)
				prAMatrix[j * wDimension + k] -= prAMatrix[i * wDimension + k]* ratio;	
		}//end for j
        	
	//compute X vector's element from down to top 
	for(i = wDimension - 1; i >= 0; i--)
	{
		//substract the part that X's couterpart element has been computed
		for(j = wDimension - 1; j > i; j--)
			prBVector[i] -= prAMatrix[ i * wDimension + j] * prXVector[j];
		//compute the X's couterpart element
		prXVector[i] = prBVector[ i ] / prAMatrix[i * wDimension + i];
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -