User Tools

Site Tools

study:foc-topic:241017-001:index

正弦波、三角波、方波以及梯形波函數 (2024-10-17)

Local Backup

  • 波形演算法

1. 正弦波

  • 根據DESMOS工具可將
  • 當a = 1 , p = π , h = 0 a =1,p = \pi, h=0a=1 ,p=π ,h=0時可以繪製出如下正弦波
  • 因此根據上述公式可寫出程式碼如下
  • #define PI       3.141592653
    float sin_data[1024];
    void sin_wave(float Amplitude, float  Period, float Horizontal)
    {
    	unsigned int i;
    	for(i = 0;i < 1024; i++)
    	{
    		sin_data[i] = Amplitude * sin( 2 * PI / Period * i + Horizontal );	
    	}
    }

2. 三角波

  • 根據DESMOS工具可將
  • 當a = 1 , p = π , h = 0時可以繪製出如下三角波
  • 因此根據上述公式可寫出程式碼如下
  • #define PI       3.141592653
    float triangle_data[1024];
    void triangle_wave(float Amplitude, float  Period, float Horizontal)
    {
    	unsigned int i;
    	for(i = 0;i < 1024; i++)
    	{
    		triangle_data[i] = Amplitude * asin(sin( 2 * PI / Period * i + Horizontal )) / PI * 2;	
    	}
    }

3. 梯形波

  • 可以根據三角波進行一個振幅判斷,如果大於振幅最大值的x%後直接振幅最大值。
  • 因此可以簡單的更改triangle_wave函數為如下:
  • #define PI       3.141592653
    float trapezoid_data[1024];
    void trapezoid_wava(float Amplitude, float  Period, float Horizontal)
    {
    	unsigned int i;
    	float y;
    	for(i = 0;i < 1024; i++)
    	{
    		trapezoid_data[i] = Amplitude * asin(sin( 2 * PI / Period * i + Horizontal ));	
    		if( trapezoid_data[i] >= Amplitude)
    			trapezoid_data[i] = Amplitude;
    		if( trapezoid_data[i] <= -Amplitude)
    			trapezoid_data[i] = Amplitude;
    	}
    }

4.方波

  • 方波就很簡單了,直接對sin函數出來的資料做正負判斷,正等於振幅最大值,負就等於振幅最大值的負數。
  • #define PI       3.141592653
    float square_data[1024];
    void square_wave(float Amplitude, float  Period, float Horizontal)
    {
    	unsigned int i;
    	for(i = 0;i < 1024; i++)
    	{
    		square_data[i] = Amplitude * sin( 2 * PI / Period * i + Horizontal );	
    	}
    	if( square_data[i] > 0)
    		square_data[i] = Amplitude;
    	else if(square_data[i] < 0)
    		square_data[i] = -Amplitude;
    }
  • 17 person(s) visited this page until now.

Permalink study/foc-topic/241017-001/index.txt · Last modified: 2024/10/17 17:06 by jethro

oeffentlich