Advertisement

2维傅里叶逆变换 matlab_Matlab数字信号处理

阅读量:
cfa7286fc0c412ada11a43501b07ef85.png

一、函数信息与数字信号

数字信号与其传统的函数信息之间的主要显著区别在于其离散特性。具体而言,在这种特性下,数字信号的输入变量与输出值均为离散定义的数值类型。以一个声音数字信号为例,在特定的时间间隔内必定具有一个固定的采样频率,在此时间段内声音的强度也会被设定为一个精确度较高的数值取值范围。

信号的数字化一般需要三个步骤:抽样、量化、编码

一维的数字信号可能构成时序数据的形式,在实际应用中通常通过拟合或插值方法来模拟其变化特性。这种数据类型通常表现为连续且具有规律性的数学曲线。
同样地,在某些应用场景下,这些时序数据也可能代表时间序列数据。这种数据类型不仅包含丰富的频率信息,在频域分析中对应的傅里叶变换会在特定区域表现出显著的能量集中。
此外,在一些特殊情况下,这些时序数据还可能呈现出其他特征形式。例如它们可能是某种定义域上的分段平滑或其他形式的数据模型;或者是符合某种特定概率分布类型的随机过程。

二、信噪比

多种方法可用于评估误差大小。其中一种常用手段是通过图形结合观察来分析数据分布情况。其直观性较高且应用广泛。最大误差同样用于评估噪声强度。

  • 相较来说,整体平方误差

(SE) 或平均平方误差(MSE-mean square error ) 被更多采用。

另一种方法基于均方误差定义的噪声水平称为信噪比 (SNRsignal to noise ratio)

该值与其真实信号的特性存在密切关系。在同一真实信号条件下进行比较时,则表明信噪比越高对应的信号质量越优。介绍MATLAB函数调用的具体方法

snr (s, n), s​ 为信号, n为误差。

基于已知噪声分布类型及其相关参数,在直接利用这些特性作为衡量标准的情况下(即将其视为表征噪声强弱的标准),这种情况下通常会显示出较高的可靠性。而信噪比则可被视为评估去噪效果的重要指标。

例:正弦函数加噪声计算信噪比:

复制代码
 x = 0:0.001:2*pi;

    
 f = sin(x);
    
 f_ = f + normrnd(0, 0.1, 1, length(x));
    
 plot(x, f, x, f_);
    
 snr(f, f-f_)    % 结果为16.6676
e4f37464605faf4f5ee9babaed7bd409.png

三、数字信号高斯噪声的均值滤波

由于高斯噪声具有零均值特性,并且其幅值远低于对应的信号幅值(当信噪比大于10dB时)。基于此,在存在高斯噪声的情况下,我们可以采用一种较为简便的方法——平均滤波法 对带噪信号进行平滑化处理以获得较为接近原始的无噪声信号。

f1 = smooth(y) 采用了 MATLAB 内置的五点滑动平均滤波算法实现。其输出结果是列向量形式,并通过以下图像可以看出恢复效果(信噪比达到 22.38 dB)。

1c55737575cfb256f53c106a6367b4e9.png

代码为:

复制代码
 f1 = smooth(f_); f2 = smooth(f1); f3 = smooth(f2);

    
 plot(x, f1, x, f2, x, f3);
    
 legend('smooth函数的恢复结果', '2次smooth的恢复结果', '3次smooth的恢复结果')
    
 hold off;
  • f1=conv(y,ones(1,5)*1/5,'same') 采用了五点平均滤波算法 ,其在边界区域外与smooth函数具有相似的效果:(SNR=22.3660)
  • f2=conv(y,[1/16 1/4 3/8 1/4 1/16],'same') 使用了加权五点平均法 ,值得注意的是,在本例中该方法的效果较为平缓:(SNR=20.9296)
  • f3=conv(y,ones(1,9)*1/9,'same') 则采用了九点平均滤波算法 。扩大后的过滤窗口能够有效提升图像复原精度;不过需要注意的是,在扩大过滤窗口时可能会出现图像过度模糊的现象:(SNR=24.3451)

恢复效果为:

4d7135afad9667a173c9180ec002f2fa.png

四、傅里叶变换

4.1 连续傅里叶变换

傅里叶变换:是傅里叶级数的一种扩展,在某种程度上也可以被视为傅里叶级数在周期性属性趋于无限时的表现形式

  • 傅里叶变换定义为:

其中

为虚数单位,另外注意到,

  • 傅里叶逆变换定义:
  • 帕萨瓦尔等式

与傅里叶级数类似,傅里叶变换的意义是进行时频分析,

为时间,

为频率,傅里叶变换的取值往往决定了信号在什么频率上更强

Matlab函数定义

  • 函数fourier(ft,t,w) 时域变量t与频域变量\omega
    • 函数ifourier (ft,w,\tau)频域变量w与时域变量\tau

4.2 离散傅里叶变换

一维离散傅里叶变换定义为

j为虚数单位。

特别的当

时,

称为离散傅里早变换的

低频成分 被视为信号中的主要能量来源 ,其余成分则被称为 高频傅里叶成分 。低频成分与连续傅里叶变换中的 F(0) 相当 ,它代表了信号的整体表现 。而高频成分则从不同角度刻画了信号的变化特征

注:函数 fft(x) 可以利用上式计算出向量X的离散傅里叶变换

  • 离散傅里叶变换是一种线性数学工具...用于将一个有限长度的离散时间信号转换为另一个有限长度的离散频率信号...
  • 其本质是假设原始序列具有无限周期性,并基于此通过等间隔频率采样来构建完整的频域表示。
  • 离散傅里叶逆变换其逆运算定义为

    X(i) = \frac{1}{N}\sum_{k=0}^{N-1} Y(k) e^{j2\pi ik/N}

这一变换与傅里叶变换完全互逆。MATLAB函数

ifft(Y) 可以实现对应的功能

下图为前例正弦函数及含噪声的正弦函数的离散傅里叶变换:

7d25b1215cef4799439a12a575b365ab.png

代码为:

复制代码
 plot(x, abs(fft(f_)), x, abs(fft(f)));

    
 ylim([0 20])
    
 legend('含噪声的离散傅里叶变换', '真实信号的离散傅里叶变换')

4.3 利用离散傅里叶变换完成高斯噪声去噪

该算法的核心在于通过离散傅里叶变换对含噪声的信号进行处理,在频域中提取出具有显著特征的部分——幅度超过5的频率成分,并通过这些关键信息重建一个更为清晰的目标信号;其中参数threshold设为5

复制代码
 Ff = fft(f_);

    
 Ff(abs(Ff)<5)=0.0;         %将绝对值小于5的傅里叶系数都设为0.0 
    
 f1 = ifft(Ff);
    
 plot(x, f_, x, f1);
    
 legend('带噪声函数', '离散傅里叶变换结果');
c2c45095f455f6efe3c691d4068933f7.png

4.4 离散傅里叶变换去噪的局限性

但是,在尝试通过将三角函数叠加为阶梯型函数的方式使其成为分片光滑函数时,在应用傅里叶变换结合硬阈值去除绝对值较小系数的算法时可能会遇到以下问题:一方面可能导致无法有效去除噪声;另一方面可能会破坏原始信号的信息。

软阈值算和硬阈值的区别

  • 硬阈值算子

注意到其绝对值不小于

各元素均未发生变化。对y的傅里叶系数施加硬阈值运算相当于求解以下优化问题

其中,

表示

的离散傅里叶变换,

表示

的非零元素的个数。

  • 软阈值算子

,对

的傅里叶系数做软阈值算子处理相当于求解问题

软阈值算法完成高斯噪声去噪

就前面所述的情况而言,在性能上软阈值算法优于硬阈值算法,在某些方面仍未能达到五点均值滤波的效果。其原因在于所涉及的函数不具备全局光滑性和周期性的特点,因而导致其傅里叶系数的稀疏度不足。代码如下:

复制代码
 clear,close all,rng default

    
 x=0:pi/50:2*pi;f = sin(x);
    
 for i = 1:5         %强行设置若干处阶梯越阶,构造分片光滑函数 
    
     f(i*20-19:i*20)=f(i*20-19:i*20)+(5-i);
    
 end
    
 y = f + randn(size(x))*0.5;
    
 Ff = fft(y);
    
 Ff = sign(Ff).*max(abs(Ff)-5,0);
    
 %将绝对值小于5的傅里叶系数都设为0.0,模大于5的系数幅角不变,模减5
    
  
    
 f1 = ifft(Ff);
    
 snr(f,f1-f)                %结果的SNR=16.9631

五、总结

数字信号处理中的去噪问题通常涉及多种类型;有效的降噪方法并非唯一;其性能主要取决于噪声的类型及其强度以及目标函数特性(即真实信号值)。

  • 主要的噪声类型除高斯型外,还包括脉冲型干扰,其特点是部分采样数据出现异常的函数响应,这类问题一般可采用中值滤波器来进行去噪处理或直接修正。
  • 泊松型干扰是信号处理领域较为棘手的一种非加性干扰,其基本特性是在预设的最大阈值λ之上,每一点都会被设定一个预设的最大阈值λ

真实值,

为比例因子,然后基于参数(期望)为

的泊松分布下获取一个整数值

,带噪信号的该点对应信号值为

。容易发现

越小时,泊松噪声造成的影响越大。

  • 傅里叶变换在处理三角函数去噪方面表现出色。
    • 由于三角函数在此处的傅里叶变换系数呈现出完美的稀疏特性,在处理分段光滑的函数时表现较为普通。
    • 在分析目标函数特性时,选择合适的变换以及适当的约束(如正则化)变得至关重要。

全部评论 (0)

还没有任何评论哟~