- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在Matlab中使用fir2
函数设计一个FIR,而我正努力获得与我要实现的幅度函数相对应的滤波器的频率响应。
这是我用于滤波器设计的代码,x
是幅值响应,如图所示
fs = 48000; %sample rate
fny = fs/2; %Nyquist frequency
tabs = 512; %tabs
%frequency resolution 1/3 octave, length=28
f = [0 63 80 100 125 160 200 250 315 400 500 630 800 1000 1250 1600
2000 2500 3150 4000 5000 6300 8000 10000 12500 16000 20000 fny];
fn = f/(fny);
coeffs = fir2(tabs,fn,x);
figure(1);
[freq_response,fc] = freqz(coeffs,tabs);
H = abs(freq_response);
subplot(2,1,1);
semilogx(fc*fny,H, 'r');
hold on;
xlim([20 20000]);
title('frequency response of fir2 filter');
xlabel('frequency [Hz]');
ylabel('magnitude [dB]');
grid on;
set(gca,'XTick',[20 50 100 200 500 1000 2000 5000 10000 20000]);
subplot(2,1,2);
semilogx(f,20*log10(x),'b');
title('desired magnitude function');
xlabel('frequency [Hz]');
ylabel('fir coefficients');
grid on;
xlim([20 20000]);
set(gca,'XTick',[20 50 100 200 500 1000 2000 5000 10000 20000]);
最佳答案
首先,我们应该观察到函数 freqz
期望滤波器传递函数的分子和分母多项式系数。然后,您还可以在频率响应中指定其他参数,例如所需的点数,但这将在强制性分子和分母多项式系数之后。对于没有显式分母的FIR滤波器,隐式分母是常量1
。因此,根据您的情况,调用freqz
的正确方法是:
[freq_response,fc] = freqz(coeffs,1,tabs);
[0,pi]
范围的角频率。为了获得以Hz为单位的频率,您需要使用
pi
重新缩放角频率(尝试这样做,但是缺少
f*fny/pi
因子)。另外,您可以简单地将采样率传递给
freqz
函数:
[freq_response,fc] = freqz(coeffs,1,tabs,fs);
H
(以线性比例表示)转换为dB:
[freq_response,fc] = freqz(coeffs,1,tabs,fs);
H = abs(freq_response);
...
semilogx(fc,20*log10(H), 'r');
关于matlab - Matlab fir2频率响应与幅度响应不对应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44859544/
我正在挖掘一些关于用 C++ 从我的 IQ 数据样本中过滤噪音的信息。 我了解到这可以通过使用一个简单的过滤器来完成,该过滤器计算最后几个数据样本的平均值并将其应用于当前样本。 您是否对这种过滤有更多
我正在尝试在 STM32F407 微 Controller 上实现 60kHz 带通滤波器,但遇到了一些问题。我在 MATLABs fdatool 的帮助下生成了过滤器,然后也在 MATLAB 中对其
有谁知道是否可以将以前的输出值传递给 Matlab 中的 FIR 滤波器?我想这样做是因为我有大量数据(> 300Gb),我想对其进行过滤和下采样。如果我在 FIR 函数中使用标准的 [b,a] 系数
我正在尝试使用 vDSP_desamp()例程对不断捕获的音频信号执行下采样。根据 Accelerate-framework 文档,此例程执行 FIR 滤波和抽取。 但是我有一个冲突,因为 API 没
我有一个幅频响应点列表。振幅以分贝为单位给出。 任务是将此 AFR 列表导出为某些硬件 DSP 设备的一组系数。我知道此设备的文件格式。该设备的规范表明它需要 12288 个系数,并且 DSP 有 2
我想制作一个 FIR 滤波器。我有一个系数数组 (buffer[size]) 和一个数据数组 (filter[size_filter])。我必须在两个数组之间进行卷积: for(j = 0;j < s
我想在 Python 中通过窗口创建一个基本的高通 FIR 滤波器。 我的代码在下面并且是故意惯用的 - 我知道你可以(很可能)用 Python 中的一行代码完成它,但我正在学习。我使用了一个带有矩形
我已经在 Haskell 中实现了一个 FIR 滤波器。我不太了解 FIR 滤波器,我的代码很大程度上基于现有的 C# 实现。因此,我觉得我的实现有太多的 C# 风格,而不是真正的 Haskell 风
我需要制作一个简单的带通音频滤波器。现在我使用了这个简单的 C++ 类:http://www.cardinalpeak.com/blog/a-c-class-to-implement-low-pass
我试图在我的应用程序中添加 Firebase 实时数据库 功能,但我意识到我没有将它放入我的 pod 文件。 这就是我所做的,我添加了 'Firebase/Database' 并运行了 pod upd
我正在使用 FIR 滤波器对音频进行过采样。这是一个简单的典型窗口 sinc,即一个被截断和窗口化的 sinc 函数。像往常一样,它需要过去和“ future ”的样本才能工作。实际上,这意味着音频输
我正在嵌入式微 Controller (TMS320F28069) 上进行编程,这是一个 32 位浮点 MCU。我正在研究一些示例项目,其中一个在 ADC 采样数据上实现了一个简单的 FIR 滤波器。
我最近查看了 Google Firebase 的 quickstart-js/firestore/ 存储库中的代码,当我在 index.html 中遇到以下 html 时: 63
目前我正在尝试实现 FIR 低通滤波器。 FIR 系数在 MATLAB 中计算。现在我需要用 C++ 实现 FIR 算法。 我将一个类定义为过滤器,将 FIR 的一个函数定义为: double * F
我正在用 C 实现 FIR 低通滤波器。在 MATLAB 中生成了一些系数,我用它们来计算输出。音频来自 Zynq Zedboard,是实时的。如果我运行该应用程序,我会听到很多噪音。但我不知道信号是
我有一个用 C 语言实现 FIR 滤波器的家庭作业,我想知道您是否认为我理解正确。我认为解决问题的程序是: #include float FIRfloats[5]; void floatFIR(fl
FIR 滤波器有一个算法,但它是 float : FIR filter implementation in C programming 如果我想要一个符合此规范的定点算法,我该怎么做? the FIR
我正在尝试对 FIRDatabaseQuery 对象执行内部联接。 下面是数据库结构。我有一些链接到帖子评论的帖子。我正在尝试获取特定用户添加评论的所有帖子: { "posts" : {
我是 DSP 的新手,我有一个关于信号过滤的问题。正如我在 Internet 上看到的,IIR 和 FIR 滤波器通常用于过滤信号。此外,我还看到了另一种过滤信号的方法,即:频域滤波器(如在 Aqui
我正在尝试在 CUDA 中实现 FIR(有限脉冲响应)滤波器。我的方法很简单,看起来有点像这样: #include __global__ void filterData(const float *d
我是一名优秀的程序员,十分优秀!