2014-11-14 77 views
0

我有2-d的數據從測量看起來如下:如何從Matlab的嘈雜信號中找到本地「手段」?

matlab noisy data

噪聲使Y數據是從[4.03,4.1]的範圍內。我如何獲得每組點的平均值(x,y),例如(0.3,4.07),(1.6,4.08),(2.3,4.05),(3,4.07)。

我看到一些關於nlfilter,但大多數例如有關表示一個2-d的圖像。謝謝你的幫助!

編輯:

我產生了圖下方有:

plot(t, y); 

T個數據看起來:

t(some_condition(1:40)) 

ans = 

    1.0e-04 * 

    Columns 1 through 6 

    0.0216 0.0216 0.0216 0.0216 0.0216 0.0217 

    Columns 7 through 12 

    0.0217 0.0217 0.0217 0.0217 0.0218 0.0928 

    Columns 13 through 18 

    0.0928 0.0928 0.0928 


    >> mean(t(some_condition)) 

    ans = 

    1.6686e-05 

所以,我只在T得到一個值的平均值,而我想要4個手段(實際上,0.8左右的2個點)也是噪音。

+1

哪些變量保存數據? – 2014-11-14 15:58:27

+0

測量是隨時間推移的事件。事實上,t(=時間)和y都包含噪音。 – poseid 2014-11-14 20:14:26

回答

1

在MATLAB中的平均功能動作逐列,因此,使用平均(YDATA)會給你含有平均每個x位置的陣列。如果我給你的權利,這裏是一個示例代碼,做你所追求的(我認爲):

clear 
clc 

%// Generate dummy data 
x = repmat(1:4,10,1); 
y = rand(10,4); 

My = mean(y) 

我這個樣子的:

My = 

0.5854 0.6799 0.5431 0.2933 

然後用散點圖點:

hold on 

for k = 1:size(y,2) 
scatter(x(:,k),y(:,k)) 
markerarea = 200; 
scatter(k,My(k),markerarea,'filled','d') %// Represent the mean as a diamond. 
end 
hold off 

axis([0 5 0 1]) 

,看起來像這樣:

enter image description here

這是你想到的嗎?如果不是,請告訴我,我將修改/刪除我的答案:)

+1

正確看到問題時,「x」值也很嘈雜。所以有些'mean(x)'也可能是必需的。此外,日期不規則,因此它們是否以矩陣格式存儲是有問題的。 – Nemesis 2014-11-14 16:26:28

+0

事實上,t(=時間)和y都包含噪音。上面的答案包含散點圖的一些不錯的技巧。我在想的方法將適用於某種量化或nlfilter,但不確定。 – poseid 2014-11-14 20:17:01

+0

是的,事實上,復仇女神是對的我誤解了一個問題,我猜對不起:) – 2014-11-14 20:21:12

2

你可以嘗試以下方法:

x_filter = [0.03 0.16 0.23 0.30]*1e-5; % Insert value you want to filter here and exluce those which not 

for i = 1:numel(x_filter) 
    ind = abs(t-x_filter(i))<0.01e-5; % Or any other offset 
    x_m = mean(t(ind)); 
    y_m = mean(y(ind)); 
    plot(x_m,y_m,'x','MarkerSize',20); 
end 
+0

好想法+1! – 2014-11-14 20:21:45