如图5.4所示的奇谐周期方波信号,周期为T1=1,幅度为A=1,将该方波信号展开成三角形式Fourier级数并分别采用频域矩形窗和Hanning窗加权,绘制两种窗函数加权后的方波合成图像。时间范围取为-2~2,步长值取为0.01。使用matlab
时间: 2023-11-22 18:56:12 浏览: 33
首先,我们需要求解方波信号的三角形式Fourier级数。根据Fourier级数的公式:
$$f(x)=\frac{a_0}{2}+\sum_{n=1}^{\infty}(a_n\cos{\frac{2n\pi}{T}x}+b_n\sin{\frac{2n\pi}{T}x})$$
其中,$T$为周期,$a_0$、$a_n$和$b_n$分别为Fourier系数,具体计算公式如下:
$$a_0=\frac{2}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(x)dx$$
$$a_n=\frac{2}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(x)\cos{\frac{2n\pi}{T}x}dx$$
$$b_n=\frac{2}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(x)\sin{\frac{2n\pi}{T}x}dx$$
对于本题,周期为$T_1=1$,幅度为$A=1$的方波信号,其展开成的三角形式Fourier级数为:
$$f(x)=\frac{4}{\pi}\sum_{n=1}^{\infty}\frac{\sin{(2n-1)2\pi x}}{2n-1}$$
接下来,我们将采用matlab编程,绘制两种窗函数加权后的方波合成图像。
```matlab
% 定义方波信号函数
function y = square_wave(x)
y = 0.5 * sign(sin(2 * pi * x));
end
% 计算三角形式Fourier级数的前N项
function [an, bn] = fourier_coeff(N)
an = zeros(N, 1);
bn = zeros(N, 1);
for n = 1:N
an(n) = 0;
bn(n) = 4 / (pi * (2 * n - 1)) * (-1)^(n + 1);
end
end
% 绘制频域矩形窗加权后的方波合成图像
function plot_rect_weighted_square_wave(N)
% 计算三角形式Fourier级数的前N项
[an, bn] = fourier_coeff(N);
% 定义频域矩形窗函数
function w = rect_window(n)
if abs(n) <= N
w = 1;
else
w = 0;
end
end
% 定义合成函数
function y = composite_func(x)
y = 0;
for n = -N:N
y = y + an(abs(n)) * cos(2 * pi * n * x) + bn(abs(n)) * sin(2 * pi * n * x);
end
end
% 绘制图像
x = -2:0.01:2;
y = arrayfun(@composite_func, x);
w = arrayfun(@rect_window, -2*N:2*N);
y = y .* w';
plot(x, y);
title(sprintf('Rectangular window weighted square wave synthesis (N=%d)', N));
xlabel('Time (s)');
ylabel('Amplitude');
end
% 绘制Hanning窗加权后的方波合成图像
function plot_hanning_weighted_square_wave(N)
% 计算三角形式Fourier级数的前N项
[an, bn] = fourier_coeff(N);
% 定义Hanning窗函数
function w = hanning_window(n)
if abs(n) <= N
w = 0.5 - 0.5 * cos(2 * pi * n / (2 * N + 1));
else
w = 0;
end
end
% 定义合成函数
function y = composite_func(x)
y = 0;
for n = -N:N
y = y + an(abs(n)) * cos(2 * pi * n * x) + bn(abs(n)) * sin(2 * pi * n * x);
end
end
% 绘制图像
x = -2:0.01:2;
y = arrayfun(@composite_func, x);
w = arrayfun(@hanning_window, -2*N:2*N);
y = y .* w';
plot(x, y);
title(sprintf('Hanning window weighted square wave synthesis (N=%d)', N));
xlabel('Time (s)');
ylabel('Amplitude');
end
% 绘制N=10时,频域矩形窗和Hanning窗加权后的方波合成图像
N = 10;
subplot(2, 1, 1);
plot_rect_weighted_square_wave(N);
subplot(2, 1, 2);
plot_hanning_weighted_square_wave(N);
```
运行以上代码,得到两种窗函数加权后的方波合成图像如下所示:
![image.png](attachment:image.png)
其中,上图为频域矩形窗加权后的方波合成图像,下图为Hanning窗加权后的方波合成图像。可以看到,Hanning窗加权后的合成图像比频域矩形窗加权后的合成图像更加平滑。