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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 计算汉明距_matlab实现滑动平均滤波

發布時間:2024/9/27 循环神经网络 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 计算汉明距_matlab实现滑动平均滤波 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是滑動均值濾波

滑動平均濾波就是把連續取得的N個采樣值看成一個隊列,隊列的長度固定為N,每次采樣得到一個新數據放到隊尾,并丟掉原來隊首的一次數據,把隊列中的N個數據進行平均運算,就可以獲得新的濾波結果。

具體的matlab代碼

  • clear
  • clc
  • load boxinfo.mat %載入音頻數據
  • T = data;
  • figure(1)
  • plot(T,'-*')
  • title('原始數據')
  • hold on;
  • %%
  • %滑動平滑濾波
  • L = length(T);
  • N=10; % 窗口大下
  • k = 0;
  • m =0 ;
  • for i = 1:L
  • m = m+1;
  • if i+N-1 > L
  • break
  • else
  • for j = i:N+i-1
  • k = k+1;
  • W(k) = T(j) ;
  • end
  • T1(m) = mean(W);
  • k = 0;
  • end
  • end
  • plot(T1,'r-o')
  • grid
  • legend('原始數據','濾波之后')
  • 濾波前后對比圖

    簡單分析一下

    經過滑動濾波之后,波形整體變得平滑,這里我們重點關注一下x軸附近的點,可以發現,在波形與x軸交叉的地方,波形都平穩過度,這極大方便的我們后期進行統計。

    窗口大小選擇

    從代碼中我們可以發現窗口大小我們選擇的是10,如何選擇窗口大小,這里我們需要進行一些簡單的分析和測試。如果x軸附近的噪點數量(一上一下)比較多,那么窗口大小就應該大一些,反之,小一些。但是過大又會出現過擬合的現象,所以可以多取幾個值,然后對比一下,選擇一個最好的即可。

    不同的窗口大小對比圖

    簡單分析一下

    從圖中我們可以很明顯的看出,當N=4的時候,濾波效果還不是很好,在x軸附近依然有噪點(一上一下),當N=7的時候,已經基本滿足我們的要求,圖形已經可以很平穩的過度了,但是從右邊的標記處可以看出還是不是很平穩,所以可以繼續提高N值,當N=10的時候,波形就完全能夠達到我們的要求,所以取10即可。

    滑動平均(moving average):在地球物理異常圖上,選定某一尺寸的窗口,將窗口內的所有異常值做算術平均,將平均值作為窗口中心點的異常值。按點距或線距移動窗口,重復此平均方法,直到對整幅圖完成上述過程,這種過程稱為滑動平均。

    滑動平均相當于低通濾波,在重力勘探和測井資料處理解釋中常用此方法。 如果滑動窗長為n的話,滑動平均就是讓數據通過一個n點的FIR濾波器,濾波器抽頭系數都是1,這樣取滑動平均就是起到序列平滑的作用。

    利用filter函數求滑動平均

    Matlab有多種計算滑動平均的方法,現介紹基于filter函數的計算方法。設原始數據為x,平均窗口設為a(a為正整數),那么無權重滑動平均后的數據y為:

    windowSize =a;

    y=filter(ones(1,windowSize)/windowSize,1,x);

    上述命令實際上計算的是:

    y(1)=(1/a)*x(1);

    y(2)=(1/a)*x(2)+(1/a)*x(1);

    ... ...

    y(a)=(1/a)*x(a)+(1/a)*x(a-1)+...+(1/a)*x(1);

    ... ...

    y(i)=(1/a)*x(i)+(1/a)*x(i-1)+...+(1/a)*x(i-a+1);

    ... ....

    可以看出,計算某一位置處的平均值時,窗口的前端位于該處。有時為了將窗口中部放在所計算的位置處,這樣上述計算方式則變為(為敘述方便起見,設a為奇數):

    y(1)=(1/a)*x(1)+(1/a)*x(2)+...+(1/a)*x((a+1)/2);

    y(2)=(1/a)*x(1)+(1/a)*x(2)+...+(1/a)*x((a+1)/2+1);

    ... ...

    y((a+1)/2)=(1/a)*x(1)+(1/a)*x(2)+...+(1/a)*x((a+1)/2)+...+(1/a)*x(a);

    ... ...

    y(i)=(1/a)*x(i-(a-1)/2)+(1/a)*x(i-(a-1)/2+1)+...+(1/a)*x(i)+...+(1/a)*x(i+(a-1)/2);

    ... ...

    這種方式的滑動平均稱為中心滑動平均,其Matlab的計算語句為:

    windowSize =a;

    y1=filter(ones(1,a/2+1)/windowSize,1,x);

    y2=filter(ones(1,a/2+1)/windowSize,1,fliplr(x));

    y=y1+fliplr(y2)-(1/a)*x;

    如利用1-2-1 濾波器計算有權重的中心滑動平均,其Matlab語句為:

    y1=filter([0.50.25],1,x);

    y2=filter([0.5 0.25],1,fliplr(x));

    y=y1+fliplr(y2)-0.5*x;

    總結

    以上是生活随笔為你收集整理的matlab 计算汉明距_matlab实现滑动平均滤波的全部內容,希望文章能夠幫你解決所遇到的問題。

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