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

📄 myfirmain.c

📁 ccs中产生正弦和余弦相加的混合
💻 C
字号:
 /*将两个不同频率叠加的正弦余弦信号进行FIR滤波,得到频率较低的正弦信号*/
 /*滤波器系数用matlab计算 */
 
#include "stdio.h"
#include "math.h" 

static void dataIO(); /*提供软件中断*/
void FIR(float input[],float output[],int SIZE);/*滤波核心函数*/

float coffi[21]={
                 0.000478595791017,0.000726931684122,-0.003065643310532,
                 -0.005972516207952,0.009162581410507,0.024305842109567,
                 -0.018305853075952,-0.076072756598977,0.026970528950393,
                 0.306965272918299,0.469427460783227,0.306965272918299,
                 0.026970528950393,-0.076072756598977,-0.018305853075952,
                 0.024305842109567,0.009162581410507,-0.005972516207952,
                 -0.0030656643310532,0.000726931864122,0.000478595791017
                 };/*滤波器系数*/

float input[256];/*输入数据,使用库函数计算正余弦叠加信号*/
float output[256];/*经过fir滤波的输出数据*/

main() 
{ 
   int i; 
   /*计算输入信号*/
   /*正弦频率1000,余弦频率2500*/
   for(i = 0;i <= 255;i ++)  
     {
     input[i]=(sin(2*3.14159235*i*1000/8000)+cos(2*3.14159265*i*2500/8000))/4; 
     output[i]=0;
     }
   
   FIR(input,output,256);   /*滤波*/
 while(1)
 {
  dataIO(); /*此处加入软件中断,用以观察图形*/
 }
}

/*函数:FIR
  作用:将输入滤波写入到输出信号中
  输入:输入信号,输出信号,变量维数
  返回:无*/
/*滤波公式:y(n)=coff[0]*x(n-0)+coff[1]*x(n-1)+.....+coff[N]*x(n-N)*/
/*此时N为20,n为255*/
void FIR(float input[],float output[],int SIZE)
{
  int i,j;
  for(i=0;i<SIZE;i++)
    for(j=0;j<21;j++)
   output[i]+=coffi[j]*input[i-j];
   
   puts("FIR end!\n");
}

static void  dataIO()
{
  return ; 
}

⌨️ 快捷键说明

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