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

📄 ica2.cpp

📁 fastica C++实现,很简单的,很容易看的
💻 CPP
字号:
// ica2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "matrix.h"
#include <string.h>

void testwhitensignal()
{
	int r=100,c=4;
	double** a=readsample("data.txt",r,c);
	write("inputdata输入数据.txt",a,r,c);

	double** x=zeromean(a,r,c);
	write("0mean0均值数据.txt",x,r,c);

	double** x1=normalize(x,r,c);
	write("norm归一化数据.txt",x1,r,c);

	double** Rx=cov(x1,r,c);
	write("Rx归一化数据的关联矩阵.txt",Rx,c);

	double* d=new double[c];
	double* e=new double[c];

	householder(Rx,c,d,e);
	ql(Rx,c,d,e);
	permute(Rx,d,c);

	double** EE=Rx;  // eigenvector matrix
	double* DD=d;    // eigenvalues
	write("EE关联矩阵的本征矢矩阵.txt",EE,c);
	write("DD关联矩阵的本征值.txt",DD,c);

	double** VV=vforwhiten(EE,DD,c);  // whitening matrix
	write("VV白化矩阵.txt",VV,c);

	double** WW=whiten(VV,x1,r,c);  // whiten signal
	write("WW白化矩阵白化的数据.txt",WW,r,c);


	double** YY=mult(x1,EE,r,c,c);  // PCA signal
	write("PCA数据.txt",YY,r,c);

	double** normYY=normalize(YY,r,c);  // normalized PCA signal == whiten signal
	write("PCA数据归一化.txt",normYY,r,c);
	///////////////////////////////////////////////////////////////////////////////////////////


	double** ws=whitensignal(a,r,c);
	write("whitesignal函数白化的数据.txt",ws,r,c);
	/////////////////////////////////////////////////////////////////////////////////////////////

}

void testpca()
{
	int r=100,c=4;
	double** a=readsample("data.txt",r,c);
	double** E=alloc(c);
	double* d=new double[c];
	double** pcad=pca(a,r,c,E,d);
	write("pcadata.txt",pcad,r,c);
	write("pcaE.txt",E,c);
	write("pcad.txt",d,c);
}

void testorth()
{
	int r=10;
	int c=10;
	double** a=createrand(r,c);
	write("orth0.txt",a,r,c);
	write("orth.txt",orthonormalize(a,r,c),r,c);
}

void testfastica()
{	
	int r=0,c=0;
	char filename[100];
	cout<<"input "<<endl<<"(1)data file name"<<endl<<"(2) number of data"<<endl<<"(3) number of channel"<<endl;
	cin>>filename>>r>>c;
	double** a=readsample(filename,r,c);	
	double** neww=NULL;
	double** s=fastica(a,r,c,c,neww);
	char icafile[100];
	char wfile[100];
	cout<<"input "<<endl<<"(1)ica file name"<<endl<<"(2) weight file name"<<endl;
	cin>>icafile>>wfile;
	write(icafile,s,r,c);
	write(wfile,neww,c,c);

}

int main(int argc, char* argv[])
{
	//testwhitensignal();
	//testpca();
	//testorth();
	testfastica();
	return 0;
}

⌨️ 快捷键说明

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