给定10位有符号整数输入信号,请在C/C++或matlab或python中编写一个四抽头四系数fir函数。
时间: 2023-02-07 17:56:53 浏览: 112
在 C/C++ 中,您可以使用以下代码来实现四抽头四系数 FIR 函数:
```
#include <stdio.h>
#define N 4 // 四抽头
#define M 4 // 四系数
int fir(int input[N])
{
int output = 0;
static int delay[M] = {0}; // 延迟线
// 系数数组
static int coefficient[M] = {1, 2, 3, 4};
// 输入信号缓存
static int buffer[N] = {0};
// 将输入信号复制到缓存中
for (int i = 0; i < N; i++)
buffer[i] = input[i];
// 计算输出信号
for (int i = 0; i < M; i++)
output += coefficient[i] * buffer[N - i - 1];
// 将输出信号添加到延迟线中
for (int i = M - 1; i > 0; i--)
delay[i] = delay[i - 1];
delay[0] = output;
return output;
}
int main(void)
{
int input[N] = {1, 2, 3, 4};
int output = fir(input);
printf("Output: %d\n", output);
return 0;
}
```
在 Matlab 中,您可以使用以下代码来实现四抽头四系数 FIR 函数:
```
function y = fir(x)
b = [1 2 3 4]; % 系数数组
y = filter(b, 1, x); % 使用 filter 函数计算输出信号
end
x = [1 2 3 4];
y = fir(x);
disp(y);
```
在 Python 中,您可以使用以下代码来实现四抽头四系数 FIR 函数:
```
def fir(x):
b = [1, 2, 3, 4] # 系数数组
y = lfilter(b, [1], x) # 使用 lfilter 函数计算输出信号
return y
x = [1, 2, 3, 4]
y = fir(x)
print(y)
```
阅读全文