📄 backup.java
字号:
import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;
import com.ms.wfc.html.*;
import com.ms.wfc.io.*;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.io.*;
/**
* This class can take a variable number of parameters on the command
* line. Program execution begins with the main() method. The class
* constructor is not invoked unless an object of type 'Form1' is
* created in the main() method.
*/
public class mainform extends Form
{
boolean draw=false;
int trial=10,electrade=16,datapoint=1200;
double eeg[][][];
double eegmean[][];
double eegstd[][];
double neeg[][][];
double Sre[][][]=new double[1][1][1];
double Sim[][][]=new double[1][1][1];
double C[]=new double[101];
public mainform()
{
// Required for Visual J++ Form Designer support
initForm();
/*
double re12=-49.39094605210731;
double im12=23.21608944704515;
double re11=-2998.422287813117;
double im11=5487.2851057336775;
double re22=-0.5815660533780922;
double im22=-0.05978839135106076;
double A12=re12*re12+im12*im12;
double A11=Math.sqrt(re11*re11+im11*im11);
double A22=Math.sqrt(re22*re22+im22*im22);
System.out.print("FUCK="+A12/(A11*A22)+"");
*/
// TODO: Add any constructor code after initForm call
}
/**
* Form1 overrides dispose so it can clean up the
* component list.
*/
public boolean IsDoubleChar(char C){
String S="0123456789.";
for(int i=0;i<S.length();i++)
if(C==S.charAt(i))return true;
return false;
}
public int DoubleNumInFile(String Filename){
try{
RandomAccessFile myfile=new RandomAccessFile(Filename,"r");
long filepointer=0;
long filelength=myfile.length();
String S="";
String buffer="";
int x=0;
while(filepointer<filelength){
S=myfile.readLine();
buffer="";
for(int i=0;i<S.length();i++){
if(this.IsDoubleChar(S.charAt(i))){
buffer+=S.valueOf(S.charAt(i));
}
else{
if(buffer.equals("")==false){
x+=1;
}
buffer="";
}
}
if(buffer.equals("")==false){
x+=1;
}
filepointer=myfile.getFilePointer();
}//while :reading file
myfile.close();
return x;
}catch(Exception e){
return 0;
}
}
public boolean ReadDoubleToEEG(String Filename){//成功为true,否则为false
try{
RandomAccessFile myfile=new RandomAccessFile(Filename,"r");
long filepointer=0;
long filelength=myfile.length();
String S="";
String buffer="";
int x=0;
while(filepointer<filelength){
S=myfile.readLine();
buffer="";
for(int i=0;i<S.length();i++){
if(this.IsDoubleChar(S.charAt(i))){
buffer+=S.valueOf(S.charAt(i));
}
else{
if(buffer.equals("")==false){
x+=1;
eeg[(x-1)%electrade+1][(x-1)/(electrade*datapoint)+1][(((x-1)%(electrade*datapoint))/electrade+1)]=Double.valueOf(buffer).doubleValue();
}
buffer="";
}
}
if(buffer.equals("")==false){
x+=1;
eeg[(x-1)%electrade+1][(x-1)/(electrade*datapoint)+1][(((x-1)%(electrade*datapoint))/electrade+1)]=Double.valueOf(buffer).doubleValue();
}
filepointer=myfile.getFilePointer();
}//while :reading file
myfile.close();
return true;
}catch(Exception e){
return false;
}
}
public void ComputEEGMEAN(){
double sum=0;
for(int i=1;i<=electrade;i++)
for(int j=1;j<=trial;j++){
for(int k=1;k<=datapoint;k++)
sum+=eeg[i][j][k];
eegmean[i][j]=sum/(double)datapoint;
sum=0;
}//for j;for i
}
public void ComputEEGSTD(){
double sum=0;
for(int i=1;i<=electrade;i++)
for(int j=1;j<=trial;j++){
for(int k=1;k<=datapoint;k++){
sum+=Math.pow(eegmean[i][j]-eeg[i][j][k],2);
}
eegstd[i][j]=Math.sqrt(sum/(double)datapoint);
sum=0;
}//for j;for i
}
public void ComputNEEG(){
for(int i=1;i<=electrade;i++)
for(int j=1;j<=trial;j++)
for(int k=1;k<=datapoint;k++){
neeg[i][j][k]=(eeg[i][j][k]-eegmean[i][j])/eegstd[i][j];
}
}
public void ComputMEANofNEEG(){
double sum=0;
for(int i=1;i<=electrade;i++)
for(int k=1;k<=datapoint;k++){
for(int j=1;j<=trial;j++){
sum+=neeg[i][j][k];
}
eegmean[i][k]=sum/(double)trial;
sum=0;
}
}
public void ComputSTDofNEEG(){
double sum=0;
for(int i=1;i<=electrade;i++)
for(int j=1;j<=datapoint;j++){
for(int k=1;k<=trial;k++)
sum+=Math.pow(eegmean[i][j]-neeg[i][k][j],2);
eegstd[i][j]=Math.sqrt(sum/(double)trial);
sum=0;
}
}
public void dispose()
{
super.dispose();
components.dispose();
}
private void button1_click(Object source, Event e)
{
//int iii=0;
OpenFileDialog ofd = new OpenFileDialog();
ofd.setFilter("EEG数据文件(*.eeg)|*.eeg|所有文件(*.*)|*.*\n");
int OK = ofd.showDialog();
if (OK==DialogResult.OK) {
try{
trial=Integer.parseInt(this.edit2.getText());
try{
electrade=Integer.parseInt(this.edit1.getText());
try{
datapoint=Integer.parseInt(this.edit3.getText());
this.label5.setText(String.valueOf(trial*electrade*datapoint));
this.label7.setText("testing......\n");
this.label8.setForeColor(Color.BLACK);
this.label8.setText("格式检验......\n");
int doublenuminfile=this.DoubleNumInFile(ofd.getFileName());
this.label7.setText(String.valueOf(doublenuminfile));
if(doublenuminfile==trial*electrade*datapoint){//检验通过
this.label8.setForeColor(Color.BLACK);
this.label8.setText("检验通过!正在数据初始化,请稍候......");
eeg=new double[electrade+1][trial+1][datapoint+1];
this.ReadDoubleToEEG(ofd.getFileName());
this.label8.setText("数据初始化完成!正在进行数据规格化,请稍候......");
//经检验,初始化无误!:)
eegmean=new double[electrade+1][trial+1];//均值
this.ComputEEGMEAN();
eegstd=new double[electrade+1][trial+1];//偏移量
this.ComputEEGSTD();
neeg=new double[electrade+1][trial+1][datapoint+1];
this.ComputNEEG();
/*
eegmean=mean(neeg,2);
eegstd=std(neeg,1,2);*/
eegmean=new double[electrade+1][datapoint+1];
this.ComputMEANofNEEG();
eegstd=new double[electrade+1][datapoint+1];
this.ComputSTDofNEEG();
/**
* for i=1:30
* for k=1:300
* neeg(i,:,k)=(neeg(i,:,k)-eegmean(i,1,k))/eegstd(i,1,k);
* end
* end
*/
for(int i=1;i<=electrade;i++)
for(int k=1;k<=datapoint;k++)
for(int j=1;j<=trial;j++)
{
neeg[i][j][k]=(neeg[i][j][k]-eegmean[i][k])/eegstd[i][k];
//System.out.print("neeg["+i+"]["+j+"]"+k+"]="+neeg[i][j][k]+"\n");
}
this.panel3.invalidate();
this.label8.setText("数据规格化完成!正在进行数据的相关/相干运算,请稍候......\n");
/////////////////////normalizing finished!Begin to coherence!/////////////////////////////////////
int t=0;
double r0[][][]=new double[trial+1][electrade+1][electrade+1];
double r1[][][]=new double[trial+1][electrade+1][electrade+1];
double r2[][][]=new double[trial+1][electrade+1][electrade+1];
double r3[][][]=new double[trial+1][electrade+1][electrade+1];
double r4[][][]=new double[trial+1][electrade+1][electrade+1];
double r5[][][]=new double[trial+1][electrade+1][electrade+1];
double r6[][][]=new double[trial+1][electrade+1][electrade+1];
double temp[][][]=new double[trial+1][electrade+1][electrade+1];
for(int i=1;i<=trial;i++){
//初始化协方差矩阵
for(int c=1;c<=electrade;c++)//for 1
for(int r=1;r<=electrade;r++){
r0[i][c][r]=0;
r1[i][c][r]=0;
r2[i][c][r]=0;
r3[i][c][r]=0;
r4[i][c][r]=0;
r5[i][c][r]=0;
r6[i][c][r]=0;
temp[i][c][r]=0;
}//for 1
for(int j=1;j<=electrade;j++){//for 2
for(int xx=1;xx<=electrade;xx++)//for 3
for(int yy=1;yy<=electrade;yy++){
temp[i][xx][yy]=neeg[xx][i][t+j]*neeg[yy][i][t+j];
}//for 3
for(int xx=1;xx<=electrade;xx++)//for 4
for(int yy=1;yy<=electrade;yy++){
r0[i][xx][yy]+=temp[i][xx][yy];
}//for 4
}//for 2
for(int xx=1;xx<=electrade;xx++)//for 5
for(int yy=1;yy<=electrade;yy++){
r0[i][xx][yy]/=(double)electrade;
}//for 5 compute R(0) for each trial
for(int j=1;j<=electrade-1;j++){//for 6
for(int xx=1;xx<=electrade;xx++)//for 7
for(int yy=1;yy<=electrade;yy++){
temp[i][xx][yy]=neeg[xx][i][t+j]*neeg[yy][i][t+1+j];
}//for 7
for(int xx=1;xx<=electrade;xx++)//for 8
for(int yy=1;yy<=electrade;yy++){
r1[i][xx][yy]+=temp[i][xx][yy];
}//for 8
}//for 6
for(int xx=1;xx<=electrade;xx++)//for 9
for(int yy=1;yy<=electrade;yy++){
r1[i][xx][yy]/=(double)(electrade-1);
}//for 9 compute R(1) for each trial
for(int j=1;j<=electrade-2;j++){//for 10
for(int xx=1;xx<=electrade;xx++)//for 11
for(int yy=1;yy<=electrade;yy++){
temp[i][xx][yy]=neeg[xx][i][t+j]*neeg[yy][i][t+2+j];
}//for 11
for(int xx=1;xx<=electrade;xx++)//for 12
for(int yy=1;yy<=electrade;yy++){
r2[i][xx][yy]+=temp[i][xx][yy];
}//for 12
}//for 10
for(int xx=1;xx<=electrade;xx++)//for 13
for(int yy=1;yy<=electrade;yy++){
r2[i][xx][yy]/=(double)(electrade-2);
}//for 13 compute R(2) for each trial
for(int j=1;j<=electrade-3;j++){//for 14
for(int xx=1;xx<=electrade;xx++)//for 15
for(int yy=1;yy<=electrade;yy++){
temp[i][xx][yy]=neeg[xx][i][t+j]*neeg[yy][i][t+3+j];
}//for 15
for(int xx=1;xx<=electrade;xx++)//for 16
for(int yy=1;yy<=electrade;yy++){
r3[i][xx][yy]+=temp[i][xx][yy];
}//for 16
}//for 14
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -