日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Matlab】信号FIR滤波及谱分析

發布時間:2023/12/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Matlab】信号FIR滤波及谱分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

一個使用matlab對正弦信號進行FIR濾波及頻譜分析的學習筆記,本文使用的是窗函數法濾波。

一、正弦信號生成

正弦函數的頻率為95和105

Fs=5120; % 采樣率 N=1024; % 采樣點 dt=1.0/5120.0; T=dt*N; t=linspace(0,T,N); x=10*sin(2*pi*95*t)+10*sin(2*pi*105*t); % 原始信號 figure(1); plot(t,x);grid on; title('原始信號'); xlabel('時間'); ylabel('幅值');

二、信號加窗

2.1 矩形窗

w1=rectwin(N); % 矩形窗 subplot(2,2,1);plot(t,w1'); title('矩形窗'); z1=2*w1'.*x; % 加矩形窗信號 subplot(2,2,3);plot(t,z1); title('加矩形窗信號');

2.2 布萊克曼窗

w2=blackman(N); % 布萊克曼窗 subplot(2,2,2);plot(t,w2'); title('布萊克曼窗'); z2=2*w2'.*x; % 加布萊克曼窗信號 subplot(2,2,4);plot(t,z2); title('加布萊克曼窗信號');


函數加窗就是將窗函數乘到原信號上,從上圖可以看到,加矩形窗的結果就是截取出窗寬度的信號;而布萊克曼窗前后會將信號衰減掉。

三、頻譜分析

y1=fft(z1,N); y2=fft(z2,N); f=linspace(0,Fs/2,N/2); A1=abs(y1)/(N/2); % 加矩形窗幅值譜 subplot(2,1,1);plot(f,A1(1:N/2)); title('加矩形窗幅值譜'); xlabel('頻率'); ylabel('幅值'); axis([0 200 0 20]); A2=abs(y2)/(N/2); % 加布萊克曼窗幅值譜 subplot(2,1,2);plot(f,A2(1:N/2)); title('加布萊克曼窗幅值譜'); xlabel('頻率'); ylabel('幅值'); axis([0 200 0 20]);


加矩形窗后的信號跟原信號是一樣的,所以其頻譜就是原信號的頻譜,可以看到有兩個峰值,就是原信號里正弦信號的頻率;而加了布萊克曼的信號頻率已經不是95和105了

四、源程序

clear; Fs=5120; % 采樣率 N=1024; % 采樣點 dt=1.0/5120.0; T=dt*N; t=linspace(0,T,N); x=10*sin(2*pi*95*t)+10*sin(2*pi*105*t); % 原始信號 figure(1); plot(t,x);grid on; title('原始信號'); xlabel('時間'); ylabel('幅值');figure(2); w1=rectwin(N); % 矩形窗 subplot(2,2,1);plot(t,w1'); title('矩形窗'); z1=2*w1'.*x; % 加矩形窗信號 subplot(2,2,3);plot(t,z1); title('加矩形窗信號'); w2=blackman(N); % 布萊克曼窗 subplot(2,2,2);plot(t,w2'); title('布萊克曼窗'); z2=2*w2'.*x; % 加布萊克曼窗信號 subplot(2,2,4);plot(t,z2); title('加布萊克曼窗信號');% 譜分析 figure(3); y1=fft(z1,N); y2=fft(z2,N); f=linspace(0,Fs/2,N/2); A1=abs(y1)/(N/2); % 加矩形窗幅值譜 subplot(2,1,1);plot(f,A1(1:N/2)); title('加矩形窗幅值譜'); xlabel('頻率'); ylabel('幅值'); axis([0 200 0 20]); A2=abs(y2)/(N/2); % 加布萊克曼窗幅值譜 subplot(2,1,2);plot(f,A2(1:N/2)); title('加布萊克曼窗幅值譜'); xlabel('頻率'); ylabel('幅值'); axis([0 200 0 20]);

結語

  • 信號的譜分析可以知道信號的頻率,頻譜圖也就是該信號里所有的頻率圖
  • 窗函數法是FIR濾波器中的一種濾波方法,選擇合適的窗可以將信號截取出合適的新信號
  • 總結

    以上是生活随笔為你收集整理的【Matlab】信号FIR滤波及谱分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。