gpt4 book ai didi

c - 用 C 语言实现的双二阶滤波器示例

转载 作者:行者123 更新时间:2023-12-04 09:17:24 25 4
gpt4 key购买 nike

我正在为嵌入式系统开发低通双二阶滤波器。在 C 语言中搜索示例,我在斯坦福大学的网站上找到了这个链接:https://ccrma.stanford.edu/~jos/filters/Biquad_Software_Implementations.html .将代码添加到 Eclipse 项目中的 filter.c 文件后,出现以下构建错误:
1-“typedef word double”上的语法错误。
2- 无法解析类型“word”(对于“typedef struct _biquadVars”中的 s2、s1、gain、a2、a1、b2 和 b1)。
3- 无法解析类型“dbl”(对于“void biquad(biquadVars *a)”中的“A”)。
4- 无法解析类型“word”(对于“void biquad(biquadVars *a)”中的“s0”)。
5- 符号“NTICK”无法解析(在“void biquad(biquadVars *a)”中)。
我做了什么:
1- 更改了“typedef word double;”到“typedef 双字;”。这解决了相关错误。
2- 更改了“dbl A;”到“双A;”。显然有帮助。
问题:
1- 我应该相信原始文章并搜索更多关于为什么选择“word”而不是“double”的信息吗?还是“dbl”是一种我不知道的类型?
2- 知道 NTICK 可能是什么吗?
谢谢。
编辑(添加示例代码):

typedef double *pp;// pointer to array of length NTICK
typedef word double; // signal and coefficient data type

typedef struct _biquadVars {
pp output;
pp input;
word s2;
word s1;
word gain;
word a2;
word a1;
word b2;
word b1;

} biquadVars;

void biquad(biquadVars *a)
{

int i;
dbl A;
word s0;
for (i=0; i<NTICK; i++) {

A = a->gain * a->input[i];
A -= a->a1 * a->s1;
A -= a->a2 * a->s2;
s0 = A;
A += a->b1 * a->s1;
a->output[i] = a->b2 * a->s2 + A;
a->s2 = a->s1;
a->s1 = s0;

}
}

最佳答案

typedef的用法是 typedef <native C type> <alias symbol>其目的通常是映射本地 C type符号到一些新符号以提高特定代码库中的可读性或相关性。在这种情况下,参数只是颠倒了:

typedef word double;//two issues, word is not a native type, double is, reverse them.
应该
typedef double word;  creates a new type 'word', equivalent to double  
还要注意这一点,以下内容也会有问题:
typedef double int;//attempting to typedef to a native type is not allowed
导致类似于以下错误:无法与先前的“双”声明说明符组合
而且,以下没有语法错误,很好:
typedef double * pp; //creates a new type pp equivalent to double *
  • 1- 我应该相信原始文章并搜索更多关于为什么选择“word”而不是“double”的信息吗?还是“dbl”是一种我不知道的类型?

  • 没有原生类型 dbl ,这很可能是文章中的错字。查看此类算法的多个来源永远不会有什么坏处。如果您可以访问经过同行评审的文章,即来自 IEEE 等来源,请尝试包含这些文章。
  • 2- 知道 NTICK 可能是什么吗?

  • 不能确定,但​​考虑到它的使用上下文
    for (i=0; i<NTICK; i++) {
    很可能是 #define某些最大刻度值。即 1000 个时钟滴答
    #define NTICK 1000 

    关于c - 用 C 语言实现的双二阶滤波器示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63159375/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com