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

📄 caculate.h

📁 简单的示波器程序
💻 H
字号:
#include "math.h"
void sinwn(int num,double f,double* sam)
{
	double pi;
    pi=4.0*atan(1.0);
	for(int i=0;i<num;i++)
	{	
	
		sam[i]=-sin(2*pi*i*f/num);
		
	}
	

	

}


void RandWave(int firstPos,
			  int n,
			  double amp,
			  double freqSignal,
			  double freqSample,
			  double phase,
			  double offset,
			  double *data)
{
	double tmp;
	tmp = freqSample / freqSignal;//可能就是时基的概念?
	double degree;
	double ssd;
//	srand((unsigned int)1);
	int times = firstPos + n;
	for (int i=0; i<n; i++)
	{
		degree = phase + 360.0/tmp*(i+firstPos);//当前点的角度
		degree *= 0.0174532925;//把角度转换为幅度3.14/180 = 0.0174532925
		data[i] = 2 * ((rand()/(double)RAND_MAX)-0.5) * amp + offset;
		ssd=data[i];
	}
}
void SquareWave(int firstPos,
				int n,
				double amp,
				double freqSignal,
				double freqSample,
				double phase,
				double offset,
				double *data)
{
	double tmp;
	tmp = freqSample / freqSignal;//可能就是时基的概念?
	double degree;

	int times = firstPos + n;
	for (int i=0; i<n; i++)
	{
		degree = phase + 360.0/tmp*(i+firstPos);//当前点的角度
		while(degree >=360)
			 degree -= 360.0;

		if(degree >= 0 && degree < 180)
			data[i] = (1.0 * amp) + offset;
		else if(degree >= 180 && degree < 360)
			data[i] = (-1.0 * amp) + offset;
	}
}

void TriangleWave(int firstPos,
				  int n,
				  double amp,
				  double freqSignal,
				  double freqSample,
				  double phase,
				  double offset,
				  double *data)
{
	double tmp;
	tmp = freqSample / freqSignal;//可能就是时基的概念?
	double degree;

	int times = firstPos + n;
	for (int i=0; i<n; i++)
	{
		degree = phase + 360.0/tmp*(i+firstPos);//当前点的角度
		while(degree >=360)
			 degree -= 360.0;
		
		if(degree >= 0 && degree < 90)
			data[i] = ((degree/90.0) * amp) + offset;//x/90
		else if(degree >= 90 && degree < 270)
			data[i] = ((2-degree/90.0) * amp) + offset;//2-x/90
		else if(degree >=270 && degree <360)
			data[i] = ((-4+degree/90)*amp)+offset;//-4+x/90
	}
}
void SawtoothWave(int firstPos,
				  int n,
				  double amp,
				  double freqSignal,
				  double freqSample,
				  double phase,
				  double offset,
				  double data[])
{
	double tmp;
	tmp = freqSample / freqSignal;//可能就是时基的概念?
	double degree;

	int times = firstPos + n;
	for (int i=0; i<n; i++)
	{
		degree = phase + 360.0/tmp*(i+firstPos);//当前点的角度
		while(degree >=360)
			 degree -= 360.0;
		
		data[i] = ((1.0 - degree/180.0) * amp) + offset;
	}
}

⌨️ 快捷键说明

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