打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
15.1 信号处理(1)——谐波分析

信号处理

本章的目的是介绍信号处理。您将学习其中两种检查大型数据集的方法。它们分别是:

  • 谐波分析
  • 快速傅立叶变换分析

在这一章中,我们使用MATLAB来研究周期性数据集。在下一节中,介绍了谐波分析方法来研究周期性数据集。在随后的一节中,应用快速傅里叶变换(FFT)方法来研究测量或计算数据的时间演变。这些方法是信号处理领域中的重要方法。

信号是由实验方法测量或计算方法计算得到的数据序列。例如,数据 在特定变量 的相对较小的间隔上进行测量,比如 可能是时间或空间维度。如果信号在 的某个范围内是周期性的,比如从 ,那么谐波分析是一种有用且实用的技术。FFT 方法是一种相关的方法。这两种方法都与将数据拟合为傅里叶级数有关。此外,这两种方法在工程领域广泛应用,比如船舶设计、声学(或噪声)和振动工程、电气工程、海洋工程等。

傅里叶级数理论是物理学家和工程师的重要课题。关于这一课题的相当全面的讨论可以在《Mathematics of Physics and Modern Engineering, Second Edition》一书中找到,该书由I.S. Sokolnikoff和R.M. Redheffer撰写,由McGraw-Hill出版(1966年)。由于这个课题的重要性,不难理解有很多其他书籍描述了这个方法背后的理论和实际应用。

在本章的介绍部分,我们给出应用傅里叶级数方法所需的结果,用于分析信号。

假设 由三角级数给出

其中 ,因此

假设函数 是周期性的,即,, 如果给定一个数据集 假设它在区间 内是周期性的, 我们可以用上述公式计算系数 。用这种方法我们说我们把 展开或者说 有傅里叶级数.

其中 是大于等于1的正整数。它是用来构造 的傅里叶级数(或傅里叶展开式)的项数。如果 并且 是连续的和周期性的,最后一个方程本质上是的三角展开式,并且结果是精确的。这个级数的一个重要优点是它也可以表示不连续函数。当然,在这种情况下,或者在三角函数表示不精确的情况下,它是 在假设的周期函数的最佳拟合表示.

15.1 谐波分析

让我们通过数据拟合三角级数来检查图15.1所示的数据。该“观测”数据样本集由以下公式生成:

误差error是由随机数生成器randn生成的,选取上述的 作为这个例子,因为它是一个包含五项三角级数和一个误差项的信号。选择这个信号是为了检查谐波分析如何从包含误差的信号中提取谐波(即前五项)。

我们希望将有限的三角函数和拟合到一组观测数据中。在这种情况下,离散的观测数据集包含了在 ,...,的值。假设。注意,是观测到数据的的定义域。的值在间隔为的等距离处进行评估(或观察)。这个数值分析的例子是针对 进行的,其中是从0到 等距离测量数据的值的数量。在这些点上获得的数据是通过应用上述方程式计算得出的。由于 上是已知的,并且假设 ,谐波分析是分析数据以确定其谐波内容的好方法,即确定我们正在应用来扩展数据的傅里叶级数的系数。请注意,由随机数生成器引入的数据噪声会对周期性假设产生误差。因此,在下面的示例中,通过重复进行计算实验十次来检查观察数据的十个集合。结果表明,在这种情况下,误差(或噪声)是随机的,并且如果进行足够数量的相同实验,则可以通过平均处理来消除。

事实证明,如果有个等距离的数据点,我们可以用个傅里叶级数项拟合数据。结果在某种意义上是精确的,因为我们有一个包含个未知数的线性方程组。我们容易知道(例如,参见上面引用的Sokolnikoff和Redheffer的书),这个问题的解是

(请注意, 在本章引言中给出的傅里叶级数中的 的两倍)。 在这种情况下,可以证明:

上面这个方程组被用于检验由等式

生成的数据,

%谐波分析
clear; clc

%循环迭代10次
for ir = 1:10
    N = 200
    % Nc = N+1 表示 x = 0(域的中心)。
    % Np = 2N+1 是在闭区间 x = [-pi, pi] 上的点数。
    dx = pi/N; % x 上的间距。
    x = -pi:dx:pi% x 的取值范围为 [-pi, pi]。
    f = [.6 - cos(x) - .5*cos(2*x) + .4*cos(3*x) ...
    + sin(x) + 0.1*randn(1,length(x))]; % f 的定义。
    A0 = (1/2/N) * sum(f(1:end-1)); % A0 的计算。
    A(N) = (1/2/N) * sum(f(1:end-1).*cos(N*x(1:end-1))); % A(N) 的计算。
    for jn = 1:N-1
        A(jn) = (1/N)*sum(f(1:end-1).*cos(jn*x(1:end-1))); % A(jn) 的计算。
        B(jn) = (1/N)*sum(f(1:end-1).*sin(jn*x(1:end-1))); % B(jn) 的计算。
   
end

AA = [A0 A];
figure(1)
hold on
stem([0:length(AA(1:11))-1],AA(1:11),'ko','LineWidth',2)
stem(B(1:9),'-.kd','LineWidth',2)
legend('A_n''s''B_n''s')
xlabel('模态数 n')
ylabel('A_n 或 B_n')
title('谐波分析示例')
hold off
figure(2)
hold on
plot(x,f,'k')
title('与误差比较的十组数据')
xlabel('x'), ylabel('f')
hold off
end

请注意,该算法被执行了十次,以检查随机误差对收敛解的影响。随机误差在单位值的正负10%之间变化。脚本中检查的周期性数据的十个样本如图15.1所示。图15.2给出了十个相关的谐波分析结果。正如我们可能预期的那样,平均而言,这些结果与下面描述的精确结果非常接近。

15.1 有误差的10个重复周期数据集的样本
15.2 十个周期数据集的谐波分析

因为函数没有误差是

这是一个由五个三角函数项组成的级数。对该函数进行的谐波分析是精确的。图15.3和图15.4分别展示了该函数及其谐波分析的精确结果。这些图形是使用上述相同的MATLAB脚本生成的,但进行了以下更改:将误差项的系数设为零,即将0.1*randn(1,length(x))];更改为0*randn(1,length(x))];。由于十次重复试验是相同的,如果您将for ir = 1:10的重复试验循环更改为for ir = 1:1,将得到与零误差情况下图中的结果完全相同的结果。

通过比较无误差数据和添加随机误差后生成的噪音数据,可以看出在实验室进行重复测量以获得有意义的谐波振幅结果的必要性,这些振幅表示所寻找的现象的形状,即在区间内的。请注意,如果使用三角级数来定义输入数据集,谐波分析的输出将完全复现输入级数。

15.3
15.4

clear; clc

N = 200% Nc = N+1 表示 x = 0(域的中心)。
dx = pi/N; % x 上的间距。
x = -pi:dx:pi% x 的取值范围为 [-pi, pi]。
f = [.6 - cos(x) - .5*cos(2*x) + .4*cos(3*x) ...
    + sin(x) + 0*randn(1,length(x))]; % f 的定义。

A0 = (1/2/N) * sum(f(1:end-1)); % A0 的计算。
A(N) = (1/2/N) * sum(f(1:end-1).*cos(N*x(1:end-1))); % A(N) 的计算。

for jn = 1:N-1
    A(jn) = (1/N)*sum(f(1:end-1).*cos(jn*x(1:end-1))); % A(jn) 的计算。
    B(jn) = (1/N)*sum(f(1:end-1).*sin(jn*x(1:end-1))); % B(jn) 的计算。
end

AA = [A0 A];

figure(1)
hold on
stem([0:length(AA(1:11))-1],AA(1:11),'ko','LineWidth',2)
stem(B(1:9),'-.kd','LineWidth',2)
legend('A_n''s''B_n''s')
xlabel('模态数 n')
ylabel('A_n 或 B_n')
title('谐波分析示例')
hold off

figure(2)
hold on
plot(x,f,'k')
title('与误差比较的十组数据')
xlabel('x'), ylabel('f')
hold off

这段代码将误差项的系数设为零,并生成了谐波分析的结果图形。它首先定义了一些参数,然后计算了一些系数。在循环中,它对每个谐波进行了计算,并将结果存储在相应的变量中。然后,它将A_n和B_n的值存储在 AA中,并在第一个图形中绘制了AA的柱状图和B的散点图。第二个图形中绘制了x和f之间的关系图。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
爱看
[转载]傅立叶变换,时域,频域一
学术︱谐波对电流互感器误差的影响
傅里叶级数物理意义的直观理解:利用傅里叶级数逼近方波信号
为什么要进行傅里叶变换
信号与信息技术若干基础知识札记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服