matlab 幅频特性(dB)y =20*log10(y)

单位转换为分贝(dB)

1、20lg(|H|),底数为10.

2、matlab中的对数函数:

log10():即lg

log():以自然指数e为底

log2():以2为底

3、matlab画图

y = fft(x)

y = abs(y)

y =20*log10(y)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据您的要求,我为您编写了一个MATLAB程序,实现了40阶带通滤波器的设计。以下是代码: ``` % 定义参数 ws1 = 0.2 * pi; wp1 = 0.35 * pi; ws2 = 0.8 * pi; wp2 = 0.65 * pi; Ap = 3; As = 65; N = 40; T1 = 0.1; T2 = 0.2; % 计算通带截止频率和阻带截止频率 wp = [wp1, wp2]; ws = [ws1, ws2]; % 计算折中频率 wc = sqrt(wp1*wp2); % 选择滤波器类型 delta_p = (10^(0.05*Ap)-1)/(10^(0.05*Ap)+1); delta_s = 10^(-0.05*As); epsilon = sqrt(delta_p); if delta_p < delta_s type = 'elliptic'; else type = 'chebyshev2'; end % 计算滤波器参数 if strcmp(type, 'elliptic') [N, Wn] = ellipord(wp, ws, delta_p, delta_s); [b, a] = ellip(N, epsilon, As, Wn); elseif strcmp(type, 'chebyshev2') [N, Wn] = cheb2ord(wp, ws, delta_p, delta_s); [b, a] = cheby2(N, As, Wn); end % 绘制幅频特性图 [H, w] = freqz(b, a); figure; plot(w/pi, 20*log10(abs(H))); title('Magnitude Response'); xlabel('Normalized Frequency (\times\pi rad/sample)'); ylabel('Magnitude (dB)'); grid on; % 计算单位抽样响应 n = 0:N-1; imp = (wc/pi)*sinc((wc/pi)*(n-(N-1)/2)); h = b(1)*imp; for i = 2:length(b) imp = [0 imp(1:end-1)]; h = h + b(i)*imp; end for i = 2:length(a) imp = [0 imp(1:end-1)]; h = h - a(i)*h; end % 绘制单位抽样响应图 figure; stem(n, h); title('Impulse Response'); xlabel('n'); ylabel('Amplitude'); grid on; % 计算单位阶跃响应 step = ones(1, N); y = filter(b, a, step); % 绘制单位阶跃响应图 figure; stem(n, y); title('Step Response'); xlabel('n'); ylabel('Amplitude'); grid on; % 计算T1和T2时的输出响应 t = 0:N-1; x = cos(wc*t); y1 = filter(b, a, x); y2 = filter(b, a, x.*(t>=T1)); y3 = filter(b, a, x.*(t>=T2)); % 绘制输出响应图 figure; subplot(3, 1, 1); plot(t, x); title('Input Signal'); xlabel('n'); ylabel('Amplitude'); grid on; subplot(3, 1, 2); plot(t, y1); title('Output Signal (All)'); xlabel('n'); ylabel('Amplitude'); grid on; subplot(3, 1, 3); plot(t, y2, 'r', t, y3, 'g'); title(['Output Signal (T1=', num2str(T1), ', T2=', num2str(T2), ')']); xlabel('n'); ylabel('Amplitude'); legend(['T1=', num2str(T1)], ['T2=', num2str(T2)]); grid on; ``` 您可以将代码复制到MATLAB代码编辑器中运行,得到滤波器的单位抽样响应、单位阶跃响应和输出响应。同时,程序还绘制了滤波器的幅频特性图和输出响应图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值