m0_53866070 2022-07-01 17:03 采纳率: 20%
浏览 42

关于matlab frezq fir1函数

输入信号x为频率0.1 Hz和0.3 Hz的等幅正弦波之和,利用fir1函数设计滤波器h,去除0.3 Hz的正弦信号,得到输出信号y。用freqz函数观察滤波器h的频率响应。显示输入信号x和输出信号y的波形。用fft函数对信号做快速傅里叶变换,并显示输入输出信号的幅频曲线。

  • 写回答

1条回答 默认 最新

  • Wayne_Fine Matlab领域优质创作者 2022-07-01 22:40
    关注

    具体步骤如下,0.1Hz与0.3Hz频率差距太小,精度自行调整,容易频谱泄漏:

    clc,clear,close all;
    t = -100:1:100;
    L = length(t);
    fs = 2;
    x1 = sin(2*pi*0.1.*t/fs);
    x2 = sin(2*pi*0.3.*t/fs);
    x3 = x1 + x2;
    %时域信号
    figure(1)
    subplot(311)
    plot(t,x1,"LineWidth",1.5)
    grid on 
    subplot(312)
    plot(t,x2,"LineWidth",1.5)
    grid on
    subplot(313)
    plot(t,x3,"LineWidth",1.5)
    grid on
    %滤波器设计
    wn = 0.2;  %截止频率wn为0.2pi(0.2Hz),wn = 2pi*f/fs
    N = 60;  %阶数选择
    hn = fir1(N-1,wn,boxcar(N));  %10阶FIR低通滤波器
    figure(2)
    freqz(hn,1);
    figure(3)
    y = fftfilt(hn,x3);  %经过FIR滤波器后得到的信号
    plot(t,y,"LineWidth",1.5)
    grid on
    %频谱分析
    Y = fft(y);  %输出信号的fft
    P2 = abs(Y/L);
    P1 = P2(1:L/2+1);
    P1(2:end-1) = 2*P1(2:end-1);
    f = fs*(0:(L/2))/L;
    plot(f,P1,"LineWidth",1.5) 
    title('Single-Sided Amplitude Spectrum of X(t)')
    xlabel('f (Hz)')
    ylabel('|P1(f)|')
    

    img


    img


    img


    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月1日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题