matlab编写代码实现三点平均器,输入一个受均值为0、方差为1的高斯随机噪声Noise(n)干扰的正弦序列x(n)=10si n(0.02nπ)+Noise(n),0≤n≤100,在同一幅图上绘制三点平均前后的序列图形,
时间: 2024-09-30 12:08:07 浏览: 63
在MATLAB中,你可以使用以下步骤来编写代码实现三点平均器并比较原始信号和处理后的信号:
```matlab
% 初始化参数
fs = 1; % 采样频率假设为1 Hz (可以根据实际情况调整)
n_samples = 100; % 数据点的数量
noise_std = 1; % 高斯噪声的标准差
amplitude = 10; % 正弦波幅度
% 创建正弦波和高斯噪声
t = 0:1/fs:n_samples-1;
x = amplitude * sin(0.02 * pi * t); % 正弦信号
noise = noise_std * randn(size(t)); % 高斯噪声
noisy_signal = x + noise; % 添加噪声到正弦信号
% 定义三点平均函数
function smoothed_signal = three_point_average(input)
if length(input) < 3
error('Input signal must be at least 3 samples long');
end
smoothed_signal = zeros(size(input));
for i = 1:(length(input)-2)
smoothed_signal(i+1) = mean(input(i:i+2));
end
end
% 应用三点平均器
smoothed_signal = three_point_average(noisy_signal);
% 绘制原始信号和处理后的信号
figure;
subplot(2,1,1);
plot(t, noisy_signal, 'b', 'LineWidth', 1.5, 'DisplayName', 'Noisy Signal');
title('Original Signal vs. Three-point Averaged Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2,1,2);
hold on;
plot(t, smoothed_signal, 'g', 'LineWidth', 1.5, 'DisplayName', 'Smoothed Signal');
legend(title='Legend');
xlabel('Time (s)');
grid on;
% 提示
阅读全文