MATLAB實現消除趨勢項

2021-10-24 17:40:31 字數 2486 閱讀 6310

y=detrend(x)
其中x是帶有線性趨勢項的訊號序列,輸出引數y是消除趨勢項的序列

[y,xtrend]

=polydetrend(x,fs,m)

x是帶有趨勢項的訊號,fs是取樣頻率,m是呼叫函式時設定的階次,輸出引數y是消除趨勢項後的訊號序列,xtrend是疊加在訊號上的趨勢項序列。

y = sgolayfilt(x,order,framelen)
framelen為幀長。

實際採集到的訊號經常會發生基線偏移,本範例背景為心電圖檢測,由於病人身體的輕微活動造成了心電圖訊號的基線漂移,後期可以利用最小二乘法擬合消除極限的漂移。

clear all

; clc; close all

;load ecgdata2.mat % 讀入心電圖資料

n=length(y)

;% 資料長度

time=(0

:n-1

)/fs;

% 計算出時間刻度

[x,xtrend]

=polydetrend(y, fs,3)

;% 用多項式擬合法求出趨勢項及消除後的序列

% 作圖

subplot 311

; plot(time,y,

'k')

title(

'輸入心電訊號'

); ylabel(

'幅值');

axis([0

max(time)

-2000

6000])

; grid;

subplot 312

; plot(time,xtrend,

'k',

'linewidth'

,1.5);

title(

'趨勢項訊號'

); ylabel(

'幅值');

axis([0

max(time)

-2000

6000])

; grid;

subplot 313

; plot(time,x,

'k')

; title(

'消除趨勢項心電訊號'

); ylabel(

'幅值');

;load ecgdata2.mat % 讀入心電圖資料

n=length(y)

;% 資料長度

time=(0

:n-1

)/fs;

% 計算出時間刻度

y1=sgolayfilt(y,3,

1001);

% 用sgolay濾波器求出趨勢項

x=y-y1;

% 計算消除趨勢項後的序列

% 作圖

subplot 311

; plot(time,y,

'k')

title(

'輸入心電訊號'

); ylabel(

'幅值');

axis([0

max(time)

-2000

6000])

; grid;

subplot 312

; plot(time,y1,

'k',

'linewidth'

,1.5);

title(

'趨勢項訊號'

); ylabel(

'幅值');

axis([0

max(time)

-2000

6000])

; grid;

subplot 313

; plot(time,x,

'k')

; title(

'消除趨勢項心電訊號'

); ylabel(

'幅值');

Matlab 實現趨勢面分析

讀取所在路徑下資料檔案中sheet1的c2 m54區域資料並儲存到雙精度矩陣num,將降水p 經緯度x y以及x y的變式讀取到num num xlsread t data.xls 1 c2 m54 p num 1 提取降水資料 x num 3 y num 4 x 1 num 2 4 提取經緯度資料...

使用 DISTINCT 消除重複項

例如,如果在titleauthor中選擇所有作者 id 時未使用 distinct,那麼將會返回下列行 其中包括一些重複的行 use pubs select au id from titleauthor下面是結果集 au id 172 32 1176 213 46 8915 213 46 8915 ...

使用 DISTINCT 消除重複項

distinct 關鍵字可從 select 語句的結果中除去重複的行。如果沒有指定 distinct,那麼將返回所有行,包括重複的行。例如,如果在titleauthor中選擇所有作者 id 時未使用 distinct,那麼將會返回下列行 其中包括一些重複的行 use pubs select au i...