Matlab - 信号噪声去除

标签 matlab signal-processing wavelet

我有一个数据向量,其中包含 -20 20 范围内的整数。

波纹管是一个具有值的图:

enter image description here

这是来自矢量数据的 96 个元素的样本。从上图可以看出,大多数元素位于区间 -2, 2。

我想消除数据中的噪音。我想消除低振幅峰值,并保留高振幅峰值,即索引 74 处的峰值。

基本上,我只是想增加高振幅峰值和低振幅峰值之间的对比度,以及是否可以消除低振幅峰值。

你能建议我一个方法吗?

我已经尝试过 mapstd 函数,但问题是它还对高振幅峰值进行了归一化处理。

我在考虑使用小波变换工具箱,但我不知道如何从小波分解系数中重建数据。

你能推荐一种方法吗?

最佳答案

检测异常值的一种方法是使用 three standard deviation rule .一个例子:

%# some random data resembling yours
x = randn(100,1);
x(75) = -14;
subplot(211), plot(x)

%# tone down the noisy points
mu = mean(x); sd = std(x); Z = 3;
idx = ( abs(x-mu) > Z*sd );         %# outliers
x(idx) = Z*sd .* sign(x(idx));      %# cap values at 3*STD(X)
subplot(212), plot(x)

enter image description here


编辑:

看来我误解了这里的目标。如果你想做相反的事情,也许是这样的:

%# some random data resembling yours
x = randn(100,1);
x(75) = -14; x(25) = 20;
subplot(211), plot(x)

%# zero out everything but the high peaks
mu = mean(x); sd = std(x); Z = 3;
x( abs(x-mu) < Z*sd ) = 0;
subplot(212), plot(x)

enter image description here

关于Matlab - 信号噪声去除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873683/

相关文章:

c++ - 如何在c调用的matlab函数中使用 "global static"变量

matlab - 使用 Julia 解决大型系统时的堆栈溢出

java - 绘制录制的声音时出现奇怪的频率

matlab - 使用==时出错矩阵尺寸必须一致

php - 我可以在网站上运行 MATLAB 代码吗?

audio - 用神经网络找到千分之一的 gem ?还有什么吗

Matlab滤波器的实现

signal-processing - 脑电小波分析

c++ - 通过软阈值 (C++) 使用 2d Haar 小波变换进行图像去噪

c++ - 在多个查询的子数组中查找不同(唯一)值的数量