• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

sinc滤波函数用c语言怎么写

yhj416606438 2022-03-01 浏览量:1045
对adc数据用sinc滤波,这种函数怎么写
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 参考一下这个程序 

    #include<stdio.h>
    #include<math.h>
    #define pi 3.14159265
    main()
    {
    int i;
    double sinc t;
    for(i = -5000; i<= 5000; i++) //因为t=i/500.0,所以t的取值范围为[-1010],但严格的说t的取值范围为[-100)U(010]
    {
    if(i == 0)
    continue;
    t = i / 500.0; //一个单位内取500个样本点
    sinc = sin(pi*t) / (pi*t);
    printf("%e\t%e\n" t sinc);
    }
    }

    • 发布于 2022-03-08
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 一个简单的实现是


    double sinc(double i) { return i?sin(3.1415926535*i)/(3.1415926535*i):1; } 

    double sinc_interpolate(double x[]int sizedouble d) { int i; double sum=0; for(i=0;i<size;i++) sum+=x[i]*sinc(d-i); return sum; }


    • 发布于2022-03-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 代码有

    // sinc3 filter
    module sinc3
    (
    input DataIn
    input rst
    input clk
    output reg [24:0] DataOut
    );
    parameter Dec = 9'd256;
    reg [24:0] sigma1;
    reg [24:0] sigma2;
    reg [24:0] sigma3;
    reg [24:0] delta1;
    reg [24:0] delta2;
    reg [24:0] sigma3_Dec;
    wire [24:0] sigma1_temp;
    wire [24:0] sigma2_temp;
    wire [24:0] sigma3_temp;
    wire [24:0] delta1_temp;
    wire [24:0] delta2_temp;
    wire [24:0] delta3_temp;
    reg [8:0] count;
    
    assign sigma1_temp=sigma1+DataIn;
    assign sigma2_temp=sigma2+sigma1_temp;
    assign sigma3_temp=sigma3+sigma2_temp;
    assign delta1_temp=sigma3_temp-sigma3_Dec;
    assign delta2_temp=delta1_temp-delta1;
    assign delta3_temp=delta2_temp-delta2;
    
    
    always@(posedge clk or negedge rst)
    begin
      if (rst==1'b0)
      begin
        sigma1<=0;
    	sigma2<=0;
    	sigma3<=0;
    	delta1<=0;
    	delta2<=0;
    	sigma3_Dec<=0;
    	count<=0;
        DataOut<=0;
      end
      else
      begin
        if (count==Dec-1)
        begin
          count<=0;
    	  sigma3_Dec<=sigma3_temp;
    	  delta1    <=delta1_temp;
    	  delta2    <=delta2_temp;
    	  DataOut   <=delta3_temp;
        end
        else
        begin
          count<=count+1;
        end
        sigma1<=sigma1_temp;
        sigma2<=sigma2_temp;
        sigma3<=sigma3_temp;
      end
    end
    endmodule
    


    • 发布于2022-03-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

sinc滤波函数用c语言怎么写