📄 o频,振,相谱,分析.cpp
字号:
#include<stdio.h>
#define n 50
#include"math.h"
#define PI 3.1415926
void main()
{
int i,j;
float y[n],a[n]={.0},b[n]={.0},an[n],fi[n];
void csju(float y[]);
void anmax(float an[]);
csju(y);
printf("Y[n]=实部+虚部\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i]+=float(y[j]*cos((2*PI/n)*j*i));
b[i]+=-float(y[j]*sin((2*PI/n)*j*i));
}
an[i]=float(sqrt(a[i]*a[i]+b[i]*b[i]));
fi[i]=float(atan(b[i]/a[i]));
printf("Y[%d]=%f+i%f\n",i+1,a[i],b[i]);
}
printf("振幅谱为:\n");
for(i=0;i<n;i++)
printf("An[%d]=%f\n",i+1,an[i]);
anmax(an);
printf("相位谱为:\n");
for(i=0;i<n;i++)
{
printf("fi[%d]=%f \t",i+1,fi[i]);
if((i+1)%2==0)printf("\n");
}
printf("\n");
}
void csju(float y[])
{
int i;
FILE *fp;
fp=fopen("褶积数据.txt", "r");
printf("文件提取数据如下:\n");
for(i=0;i<n;i++)
{
fscanf(fp,"%f",&y[i]);
printf("y[%d]=%f\n",i+1,y[i]);
}
printf("********zcx*run*over!*********\n");
fclose(fp);
}
void anmax(float an[])
{
int i=2;
float max=an[1];
do
{
if(an[i]<max&&max>an[i+1])
{
printf("************************************\n");
printf("振幅极大值的序列号是:n1=%d*\n",i-1);
printf("f0=%f\n",(i-1)/(n*0.004));
break;
}
max=an[i];
i++;
}while(i<n/2);
printf("振幅谱An的极值是:%f\n",max);
printf("************************************\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -