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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

sgolayfilt函数_Matlab中Savitzky-Golay filtering(最小二乘平滑滤波)函数sgolayfilt的使用方法...

發布時間:2025/3/15 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sgolayfilt函数_Matlab中Savitzky-Golay filtering(最小二乘平滑滤波)函数sgolayfilt的使用方法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

語法規則

y = sgolayfilt(x,order,framelen)

y = sgolayfilt(x,order,framelen,weights)

y = sgolayfilt(x,order,framelen,weights,dim)

語法描述

y = sgolayfilt(x,order,framelen):對數據向量x使用Savitzky-Golay FIR平滑濾波器。如果x是一個矩陣,則sgolayfilt對每一列進行操作。多項式階次order必須小于框長度framelen,因此framelen必須是奇數。如果order=framelen-1,則濾波器不進行平滑。

y = sgolayfilt(x,order,framelen,weights):指定了一個權重向量weights,它為正實數,用于最小二乘估計的最小化。如果該值沒有指定,或定義為空[],它默認為單位矩陣。

y = sgolayfilt(x,order,framelen,weights,dim):指定了維數dim。如果dim沒有被指定,則sgolayfilt對第一個不為1的維進行操作;指定為1則對列向量進行操作,指定2則對行向量進行操作。

舉例

穩態和瞬態Savitzky-Golay濾波器

生成一個隨機信號并使用sgolayfilt平滑。指定多項式階數為3,框長度為11.畫出原始的和平滑后的信號。

order = 3;

framelen = 11;

lx = 34;

x = randn(lx,1);

sgf = sgolayfilt(x,order,framelen);

plot(x,':')

hold on

plot(sgf,'.-')

legend('signal','sgolay')

sgolayfilt函數通過對sgolay的輸出B的中間行進行卷積來執行大部分濾波。結果是過濾的信號的穩態部分。生成并畫出這個部分。

m = (framelen-1)/2;

B = sgolay(order,framelen);

steady = conv(x,B(m+1,:),'same');

plot(steady)

legend('signal','sgolay','steady')

靠近信號邊緣的樣本不能放置在對稱窗口的中心,并且必須以不同的方式進行處理。

為了確定啟動瞬態,矩陣將B的第一個(framelen-1)/2行乘以信號的第一個framelen長度的采樣。

ybeg = B(1:m,:)*x(1:framelen);

為了確定終端瞬態,矩陣將B的最后的(framelen-1)/2行乘以信號的最后的framelen長度的采樣。

yend = B(framelen-m+1:framelen,:)*x(lx-framelen+1:lx);

連接瞬態和穩態部分以產生完整的信號。

cmplt = steady;

cmplt(1:m) = ybeg;

cmplt(lx-m+1:lx) = yend;

plot(cmplt)

legend('signal','sgolay','steady','complete')

hold off

添加權重會破壞B的對稱性,并且需要額外步驟來提供合適的解決方法。

對聲音信號的Savitzky-Golay濾波

用三階Savitzky-Golay平滑mtlb信號,數據框長度為41.

load mtlb

smtlb = sgolayfilt(mtlb,3,41);

subplot(2,1,1)

plot(1:2000, mtlb(1:2000))

axis([0 2000 -4 4])

title('mtlb')

grid

subplot(2,1,2)

plot(1:2000,smtlb(1:2000))

axis([0 2000 -4 4])

title('smtlb')

grid

總結

以上是生活随笔為你收集整理的sgolayfilt函数_Matlab中Savitzky-Golay filtering(最小二乘平滑滤波)函数sgolayfilt的使用方法...的全部內容,希望文章能夠幫你解決所遇到的問題。

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