【问题标题】:How to find local "means" from noisy signal with Matlab?如何使用 Matlab 从噪声信号中找到局部“均值”?
【发布时间】:2014-11-14 15:53:03
【问题描述】:

我有来自如下测量的二维数据:

噪声导致 Y 数据在 [4.03, 4.1] 的范围内。如何获得每组点的平均值 (x, y),例如对于图形,这将是 (0.3, 4.07), (1.6, 4.08), (2.3, 4.05), (3, 4.07)?

我看到了一些关于 nlfilter 的东西,但大多数例子都是二维图像。感谢您的帮助!

编辑:

我生成下面的情节:

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 个点)也是噪声。

【问题讨论】:

  • 哪些变量保存您的数据?
  • 测量是随时间变化的事件。实际上,t (=time) 和 y 都包含噪声。

标签: matlab


【解决方案1】:

您可以尝试以下方法:

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

【讨论】:

    【解决方案2】:

    在 MATLAB 中,mean 函数按列操作,因此使用 mean(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])
    

    看起来像这样:

    这是你的想法吗?如果不是,请告诉我,我将编辑/删除我的答案:)

    【讨论】:

    • 当正确看到问题时,x 的值也很嘈杂。所以可能还需要一些mean(x)。此外,日期不规则,因此是否以矩阵格式存储是值得怀疑的。
    • 确实,t(=时间)和 y 都包含噪声。上面的答案包含一些散点图的好技巧。我想应用的方法是某种量化或 nlfilter,但不确定。
    • 是的,Nemesis 确实是对的,我误解了这个问题,我想对此感到抱歉:)
    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 2020-06-04
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多