matlab画散点图两条拟合曲线
时间: 2025-03-16 11:22:06 浏览: 54
### 如何在 MATLAB 中绘制带有两条拟合曲线的散点图
要在 MATLAB 中创建一个包含两条拟合曲线的散点图,可以通过 `scatter` 函数绘制原始数据点,并利用多项式拟合函数 `polyfit` 和 `polyval` 对两组不同的数据分别进行拟合。以下是详细的实现方法:
#### 示例代码
以下是一个完整的 MATLAB 脚本示例,展示如何生成带两条拟合曲线的散点图。
```matlab
% 清空环境变量并关闭所有图形窗口
clear; clc; close all;
% 生成模拟数据
rng(1); % 设置随机数种子以便结果可重复
x = linspace(0, 10, 100);
y1 = 2*x + randn(size(x)); % 带有噪声的第一条直线
y2 = -1.5*x.^2 + 30*x + randn(size(x))*10; % 带有噪声的第二条抛物线
% 创建散点图
figure;
hold on;
scatter(x, y1, 'b', 'filled'); % 使用蓝色表示第一条数据
scatter(x, y2, 'r', 'filled'); % 使用红色表示第二条数据
% 进行多项式拟合
p1 = polyfit(x, y1, 1); % 对第一组数据进行一次线性拟合
fitted_y1 = polyval(p1, x);
p2 = polyfit(x, y2, 2); % 对第二组数据进行二次多项式拟合
fitted_y2 = polyval(p2, x);
% 绘制拟合曲线
plot(x, fitted_y1, 'k--', 'LineWidth', 1.5); % 黑色虚线表示第一条拟合曲线
plot(x, fitted_y2, 'g-', 'LineWidth', 1.5); % 绿色实线表示第二条拟合曲线
% 添加图表细节
title('Scatter Plot with Two Fitted Curves');
xlabel('X-axis Label');
ylabel('Y-axis Label');
legend({'Data Points Y1', 'Data Points Y2', ...
'Fitted Line for Y1', 'Fitted Curve for Y2'}, ...
'Location', 'best');
grid on;
axis tight;
```
#### 解释说明
上述代码实现了以下功能:
- 首先通过 `linspace` 定义一组均匀分布的数据点作为横坐标 \(x\) 的取值范围[^1]。
- 利用简单的数学模型加上随机噪声生成两个不同类型的因变量 \(y_1\) 和 \(y_2\)[^2]。
- 使用 `scatter` 函数分别以两种颜色显示这两组离散数据点[^3]。
- 应用了 `polyfit` 方法对每种类型的数据进行了独立的多项式回归分析,并借助 `polyval` 计算对应的预测值[^4]。
- 最终调用 `plot` 将所得最佳匹配趋势线叠加到初始散射图案之上完成可视化效果呈现。
#### 图表定制化选项
为了使最终图像更加清晰易懂,在最后还加入了诸如标题设置、轴名标注以及图例定义等功能模块来增强整体表现力。
---
阅读全文
相关推荐


















