matlab - 在 Octave 中设计一个低通滤波器 Butterwoth 原型
问题描述
你知道这段代码有什么问题吗?我正在用 Butterworth 原型构建一个过滤器,但我不知道我在哪里犯了错误。
Apass = 0.6; % dB
Astop = 16; % dB
omega_pass = 1;
Gstop = -16;
omega_stop = 5;
OMEGA = omega_stop/omega_pass;
n = ceil( log10( (10^(-Gstop/10) - 1) / ( (10^(-Gpass/ 10) -1 ) )) / ( 2 * ( log10(OMEGA))) );
p = zeros([1 n]);
for k = 1:n
p(k) = exp( ((i*pi)/(2*n)) * (2 * k + n - 1));
end;
现在我转换滤波器以抑制 130kHz+ 频率。
% 132000 Hz = 132kHz
p_lp = zeros([1 n]); %lp for LowPass, p for poles
for k = 1:n
p_lp(k) = p(k) * (130000);
end;
pkg load signal;
z = []; % zeros
k = 1.6*10^10; % signal amplification
[num, den] = zp2tf(z, p_lp, k)
sys_lp = tf(num, den)
y_lp = filter(num, den, modulated);
[osX_lp, P1_lp] = computeFFT(y_lp, fs);
我知道,情节没有显示任何东西。下面有错误。我认为过滤器没有正确过滤。你有什么想法来解决它吗?
还有错误:
warning: opengl_renderer: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot
>> warning: opengl_renderer: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot
warning: opengl_renderer: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot
warning: opengl_renderer: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot
warning: opengl_renderer: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot
warning: opengl_renderer: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot
computeFFT 是我的函数,它返回 x 轴和单面频谱
function [osX, P1] = computeFFT(data, freq)
L = length(data);
% fft
transform = fft(data);
osX = 4;
P1 = 5;
% two-sided spectrum
P2 = abs(transform/L);
osX = freq*(0:(length(P2)/2))/length(P2);
## % single-sided spectrum
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
endfunction
谢谢。
解决方案
推荐阅读
- linux - 无法使用 usermod 将组附加到用户组
- css - flexbox 拒绝按照我的意图证明内容的合理性
- javascript - 创建一个独特组合的数组
- mongodb - 从 linux 连接 mongo 数据库副本集的问题,单实例运行正常。使用 .net 核心 mongo 驱动程序
- php - 支付 WooCommerce 订单时如何重新保存可变产品的所有变体?
- ios - TPPDF ios中每一页的页脚
- server - 如何在 HAproxy 中设置自定义数量的备份后端服务器?
- javascript - 如何将照片注入 Gatsby 网站?
- sql - 案例表达式给出“日期数据类型到日期时间数据类型的转换导致超出范围的值”。
- javascript - 在 JavaScript 中合并两个多维数组的口袋