使用matlab写一段程序,生成一个正弦曲线并用蓝实线画图,叠加一个千分之8的随机噪声并用黑色实线画图,使用最小二乘法二次函数对噪声曲线进行拟合并用红色实线画图,以拟合曲线和正弦曲线的差值进行比较用紫色虚线表示,并输出最大误差值
时间: 2025-02-11 07:33:35 浏览: 35
在MATLAB中,你可以按照以下步骤编写程序来完成这个任务:
```matlab
% 导入所需库
import numpy as np
import matplotlib.pyplot as plt
% 设置参数
fs = 100; %采样频率
t = 0:1/fs:1; %时间序列
f_sine = 5; %正弦波频率
noise_level = 0.008; %噪声级别
% 创建正弦曲线
y_sine = sin(2 * pi * f_sine * t);
% 添加随机噪声
y_noisy = y_sine + noise_level * randn(size(t));
% 绘制原始数据
plt.plot(t, y_noisy, 'b', linewidth=1.5, label='Noisy data (blue)');
% 拟合二次函数
popt, pcov = polyfit(t, y_noisy, 2); % 最小二乘法拟合
y_fit = polyval(popt, t);
% 计算拟合曲线和原曲线的差值
residuals = y_noisy - y_fit;
% 绘制拟合曲线
plt.plot(t, y_fit, 'r', linewidth=1.5, label='Fit with quadratic (red)');
% 绘制差值曲线
plt.plot(t, residuals, 'purple', linestyle='dashed', label='Residuals (purple dashed)');
% 输出最大误差值
max_residual = max(abs(residuals));
fprintf('Max error: %.4f\n', max_residual);
% 显示图形并添加标签
plt.xlabel('Time');
plt.ylabel('Amplitude');
title('Sinusoidal Signal with Noise and Fit');
legend();
grid on;
```
运行此程序后,你会看到一个包含正弦波、随机噪声及拟合曲线的图表,并在命令窗口输出最大误差值。
阅读全文
相关推荐

















