% Step 3: Generate Impulse Signal
fs = 100e3; % 采样频率为100kHz
duration = 15e-3; % 持续时间为15ms
t = 0:1/fs:duration; % 时间向量
impulse_signal = zeros(size(t));
impulse_signal(1) = 1; % 冲击波信号
% Step 4: Add Random/White Noise
max_amplitude_error = 0.1; % 最大幅值误差为10%
noise_signal = max_amplitude_error * randn(size(t)); % 随机/白噪声信号
% Add noise to impulse signal
signal3 = impulse_signal + noise_signal;
% Step 5: Calculate Amplitude Spectrum and Phase Spectrum
N = length(signal3); % 信号长度
frequencies = (0:N-1) * fs / N; % 频率向量
amplitude_spectrum = abs(fft(signal3)) / N; % 幅值谱
phase_spectrum = angle(fft(signal3)); % 相位谱
% Step 6: Design Digital Filter
desired_max_amplitude_error = 0.03; % 期望的最大幅值误差为3%
filter_order = 10; % 滤波器阶数
cutoff_frequency = 5e3; % 截止频率为5kHz
% Design lowpass FIR filter
filter_coefficients = fir1(filter_order, cutoff_frequency/(fs/2));
% Apply filter to signal3
filtered_signal = filter(filter_coefficients, 1, signal3);
% Step 7: Analyze and Interpret Results
% 在这里添加对结果的进一步分析和解释,以获得合理有效的结论
% Plotting the Signals
figure;
subplot(2,1,1);
plot(t, signal3);
xlabel('Time (s)');
ylabel('Amplitude');
title('Signal 3: Impulse Signal with Random/White Noise');
% Plotting the Amplitude Spectrum
subplot(2,1,2);
plot(frequencies, amplitude_spectrum);
xlabel('Frequency (Hz)');
ylabel('Amplitude Spectrum');
title('Amplitude Spectrum of Signal 3');
% Plotting the Phase Spectrum
figure;
plot(frequencies, phase_spectrum);
xlabel('Frequency (Hz)');
ylabel('Phase Spectrum');
title('Phase Spectrum of Signal 3');
% Plotting the Filtered Signal
figure;
plot(t, filtered_signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Signal 3');
% Plotting the Comparison
figure;
subplot(2,1,1);
plot(t, signal3);
hold on;
plot(t, filtered_signal);
hold off;
xlabel('Time (s)');
ylabel('Amplitude');
title('Comparison: Original Signal 3 vs Filtered Signal 3');
legend('Original Signal', 'Filtered Signal');
% Plotting the Filter Frequency Response
figure;
freqz(filter_coefficients);
title('Frequency Response of the Digital Filter');