Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
16.04.2013
Размер:
5.43 Кб
Скачать
//---------------------------------------------------------------------------
#define Pi 3.14519
#include <math.h>
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const N=360;
float ch1[3*N];
float ch2[3*N];
float ch3[3*N];
float ch4[3*N];
float ch5[3*N];
int chet=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
//Timer1->Enabled=false;
for (int i=0;i<N;i+=1)
{
double t=2*(2*Pi*double(i)/double(N)-Pi);
ch1[i]=-sin(t*t)*0.92;
Chart3->Series[0]->AddXY(i,ch1[i],"",clRed);
ch2[i]=cos(t*t)*0.92;
Chart4->Series[0]->AddXY(i,ch2[i],"",clRed);
ch1[i+N]=0.0;
ch2[i+N]=0.0;
ch1[i+2*N]=0.0;
ch2[i+2*N]=0.0;
ch3[i]=0;
ch4[i]=0;
ch3[i+N]=sin(t*t);
ch4[i+N]=cos(t*t);
ch3[i+2*N]=0;
ch4[i+2*N]=0;
ch5[i]=0.0;
ch5[i+N]=0.0;
ch5[i+2*N]=0.0;
Chart1->Series[0]->AddXY(i,ch3[i],"",clRed);
Chart2->Series[0]->AddXY(i,ch4[i],"",clRed);
}

}
//---------------------------------------------------------------------------
void convolution()
{
float sum=0.0;
float Re=0.0;
float Im=0.0;
for (int i=0;i<3*N;i++)
{
Re+=ch2[i]*ch4[2*N+i]-ch1[i]*ch3[2*N+i];
Im+=ch1[i]*ch4[i+2*N]+ch2[i]*ch3[2*N+i];
}
sum=sqrt(Re*Re+Im*Im);
ch5[chet]=sum;
};
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (chet>=(3*N-1))
{
Timer1->Enabled=false;
}
else
{
Chart1->Series[0]->Clear();
Chart2->Series[0]->Clear();
Chart5->Series[0]->Clear();
convolution();
for (int i=0;i<N;i++)
{
Chart1->Series[0]->AddXY(i,ch3[2*N+i],"",clRed);
Chart2->Series[0]->AddXY(i,ch4[2*N+i],"",clRed);
}
for (int i=0;i<3*N;i++)
{
Chart5->Series[0]->AddXY(i,ch5[i],"",clRed);
}
double tempy=ch3[N-1];
double tempk=ch4[N-1];
for (int i=3*N-1;i>0;i--)
{
ch3[i]=ch3[i-1];
ch4[i]=ch4[i-1];
}
ch3[0]=tempy;
ch4[0]=tempk;
//double tempk=Chart4->Series[0]->YValue[3*N-1];
//Chart4->Series[0]->YValue[0]=tempk;
chet++;
}

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
Chart3->LeftAxis->Automatic=false;
Chart3->LeftAxis->Maximum=1;
Chart3->LeftAxis->Minimum=-1;
Chart3->BottomAxis->Automatic=false;
Chart3->BottomAxis->Maximum=N;
Chart3->BottomAxis->Minimum=0;

Chart4->LeftAxis->Automatic=false;
Chart4->LeftAxis->Maximum=1;
Chart4->LeftAxis->Minimum=-1;
Chart4->BottomAxis->Automatic=false;
Chart4->BottomAxis->Maximum=N;
Chart4->BottomAxis->Minimum=0;

Chart1->LeftAxis->Automatic=false;
Chart1->LeftAxis->Maximum=1;
Chart1->LeftAxis->Minimum=-1;
Chart1->BottomAxis->Automatic=false;
Chart1->BottomAxis->Maximum=N;
Chart1->BottomAxis->Minimum=0;

Chart2->LeftAxis->Automatic=false;
Chart2->LeftAxis->Maximum=1;
Chart2->LeftAxis->Minimum=-1;
Chart2->BottomAxis->Automatic=false;
Chart2->BottomAxis->Maximum=N;
Chart2->BottomAxis->Minimum=0;

Chart5->LeftAxis->Automatic=false;
Chart5->LeftAxis->Maximum=N;
Chart5->LeftAxis->Minimum=-1;
Chart5->BottomAxis->Automatic=false;
Chart5->BottomAxis->Maximum=3*N;
Chart5->BottomAxis->Minimum=0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Timer1->Enabled=true;

//double k=StrToFloat(Edit1->Text);

//Chart1->Series[0]->Clear();
//Chart2->Series[0]->Clear();
//Chart3->Series[0]->Clear();
//Chart4->Series[0]->Clear();
//Chart5->Series[0]->Clear();


//for (int i=0;i<N;i+=1)
//{
//double t=(1.5*k)*2*(2*Pi*double(i)/double(N)-Pi);
//ch1[i]=-sin(t*t)*0.92;
//Chart3->Series[0]->AddXY(i,ch1[i],"",clRed);
//ch2[i]=cos(t*t)*0.92;
//Chart4->Series[0]->AddXY(i,ch2[i],"",clRed);
//ch1[i+N]=0.0;
//ch2[i+N]=0.0;
//ch1[i+2*N]=0.0;
//ch2[i+2*N]=0.0;
//ch3[i]=0;
//ch4[i]=0;
//ch3[i+N]=sin(t*t);
//ch4[i+N]=cos(t*t);
//ch3[i+2*N]=0;
//ch4[i+2*N]=0;
//ch5[i]=0.0;
//ch5[i+N]=0.0;
//ch5[i+2*N]=0.0;
//Chart1->Series[0]->AddXY(i,ch3[i],"",clRed);
//Chart2->Series[0]->AddXY(i,ch4[i],"",clRed);
//Chart3->Series[0]->AddXY(i,ch1[i],"",clRed);
//Chart4->Series[0]->AddXY(i,ch2[i],"",clRed);
//Chart5->Series[0]->AddXY(i,ch5[i],"",clRed);
//}

//if (chet>=(3*N-1))
//{
//Timer1->Enabled=false;
//}
//else
//{
//Chart1->Series[0]->Clear();
//Chart2->Series[0]->Clear();
//Chart3->Series[0]->Clear();
//Chart4->Series[0]->Clear();
//Chart5->Series[0]->Clear();
//convolution();
//for (int i=0;i<N;i++)
//{
//Chart1->Series[0]->AddXY(i,ch3[2*N+i],"",clRed);
//Chart2->Series[0]->AddXY(i,ch4[2*N+i],"",clRed);
//}
//for (int i=0;i<3*N;i++)
//{
//Chart5->Series[0]->Clear();
//Chart5->Series[0]->AddXY(i,ch5[i],"",clRed);
//}
//double tempy=ch3[N-1];
//double tempk=ch4[N-1];
//for (int i=3*N-1;i>0;i--)
//{
//ch3[i]=ch3[i-1];
//ch4[i]=ch4[i-1];
//}
//ch3[0]=tempy;
//ch4[0]=tempk;
//double tempk=Chart4->Series[0]->YValue[3*N-1];
//Chart4->Series[0]->YValue[0]=tempk;
//chet++;
//}

}
//---------------------------------------------------------------------------




Соседние файлы в папке L5_1