matlab 构建方波,完成傅里叶变换,展示前10次谐波,同时展示再现的合成信号
时间: 2023-08-05 18:10:26 浏览: 152
可以使用以下代码构建一个频率为10Hz的方波,并进行傅里叶变换:
```matlab
% 构建方波
t = linspace(0, 1, 1000);
f = 10; % 频率为10Hz
x = square(2*pi*f*t);
% 进行傅里叶变换
N = length(x);
X = fft(x);
X_mag = abs(X/N);
X_mag = X_mag(1:N/2+1);
X_mag(2:end-1) = 2*X_mag(2:end-1);
frequencies = linspace(0, f/2, N/2+1);
% 展示前10次谐波
figure;
stem(frequencies(1:10), X_mag(1:10));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('First 10 Harmonics of Square Wave');
% 再现合成信号
num_harmonics = 10; % 使用前10个谐波
X_recon = zeros(size(X));
for i = 1:num_harmonics
index = i+1; % 忽略直流分量
X_recon(index) = X(index);
X_recon(end-index+2) = conj(X(index));
end
x_recon = ifft(X_recon)*N;
figure;
plot(t, x, 'b', t, x_recon, 'r--');
legend('Original Signal', 'Reconstructed Signal');
xlabel('Time (s)');
ylabel('Amplitude');
title('Reconstruction of Square Wave using First 10 Harmonics');
```
这段代码会首先构建一个频率为10Hz的方波,并对其进行傅里叶变换,展示前10次谐波的幅值。然后,它会使用前10个谐波来再现原始信号,并将其与原始信号进行比较。
阅读全文